gpt4 book ai didi

android - 创建 WindowInsetsCompat 的实例

转载 作者:行者123 更新时间:2023-11-29 02:18:42 26 4
gpt4 key购买 nike

核心版本:androidx.core:core:1.0.1

有什么正确的方法可以创建WindowInsetsCompat的实例吗?
如我所见,它具有私有(private)构造函数:

private WindowInsetsCompat(Object insets) {
mInsets = insets;
}

它从 5 个方法和 1 个静态包装器调用,具有包私有(private)可见性:

static WindowInsetsCompat wrap(Object insets) {
return insets == null ? null : new WindowInsetsCompat(insets);
}

那个wrap方法只用在ViewCompat里面的6个方法,仅此而已。

那么,我们能否以某种方式创建 WindowInsetsCompat 的实例?
或者,唯一的方法是 cmd+c/cmd+v?

最佳答案

您有两种解决方案来创建 WindowInsetsCompat 的实例。

第一个解决方案

可以使用反射来调用私有(private)构造函数:

package com.example.myapplication;

import androidx.core.view.WindowInsetsCompat;

import java.lang.reflect.Constructor;

public class WindowInsetsCompatHelper {

public static WindowInsetsCompat createWindowInsetsCompat(Object insets) {
try {
Constructor<WindowInsetsCompat> constructor = WindowInsetsCompat.class.getDeclaredConstructor(Object.class);
constructor.setAccessible(true);
return constructor.newInstance(insets);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}

第二种方案

需要在androidx.core.view包中创建一个辅助类。之后就可以直接使用wrap方法了:

package androidx.core.view;

public class WindowInsetsCompatHelper {

public static WindowInsetsCompat createWindowInsetsCompat(Object insets) {
return WindowInsetsCompat.wrap(insets);
}
}

关于android - 创建 WindowInsetsCompat 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57913163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com