我开始使用ContextThemeWrapper
动态地应用样式到一个ImageButton
上;参考了我的另一个问题的答案以及其他类似的问题的答案。
ContextThemeWrapper wrapper = new ContextThemeWrapper(getContext(), mStyleRes);
mImageButton = new AppCompatImageButton(wrapper, null, 0);
但最近在ContextThemeWrapper
构造函数上出现了一个lint错误,指出:
ContextThemeWrapper
只能从同一库组(groupId=com.android.support)中调用
我注意到被标记为@RestrictTo(LIBRARY_GROUP)
注释的类,这导致出现lint错误。但我找不到任何关于为什么将其限制为com.android.support
库组的信息。
据我所知,这是编程方式应用样式、主题或主题叠加到View
的唯一方法;除了将默认样式属性设置为构造函数中的第三个参数之外。因此,我想知道为什么会对其使用进行限制;在支持库之外使用该类存在问题吗?我可能不知道的副作用是否存在?
我遇到的唯一相似问题是有关一个(现已修复)bug的问题;它导致在AppCompatActivity
的子类的onCreate
方法上显示此lint错误。我认为这种情况不是一个bug,而是一个故意的限制;我希望知道背后的原因。
需要注意的是,就目前而言,这个限制实际上似乎对使用ContextThemeWrapper
的代码没有影响。它编译并正常运行,并且按照我期望的方式工作。
import android.support.v7.view.ViewPropertyAnimatorCompatSet
中遇到了同样的问题,但是我找不到替代方案,有什么想法吗? - TheHebrewHammerandroid.support.v4.view.ViewPropertyAnimatorCompat
- ephemientandroid.view.ContextThemeWrapper
更改为androidx.appcompat.view.ContextThemeWrapper
,以消除有关低API级别不可用的警告。警告是**调用需要API级别23(当前最小值为16):'new android.view.ContextThemeWrapper'**。 - gregn3