我开始使用ContextThemeWrapper
动态地将样式应用于ImageButton
;基于an answer我的另一个问题,以及其他similar questions的答案。
ContextThemeWrapper wrapper = new ContextThemeWrapper(getContext(), mStyleRes);
mImageButton = new AppCompatImageButton(wrapper, null, 0);
但是最近一个lint错误开始出现在ContextThemeWrapper
构造函数上:
ContextThemeWrapper
只能在同一个库中调用 group(groupId = com.android.support)
我注意到标有@RestrictTo(LIBRARY_GROUP)
注释的类,这会导致出现lint错误。但我找不到关于为什么仅限于com.android.support
库组的任何信息。
据我所知,这是以编程方式将样式,主题或主题叠加应用于View
的唯一方法;除了将默认样式属性设置为构造函数中的第三个参数之外。所以我想知道为什么它的使用会受到限制;在支持库之外使用类有什么问题吗?可能会有我不知道的副作用吗?
我遇到的唯一similar question是一个关于(现在已修复)的错误;导致此lint错误显示在onCreate
的子类的AppCompatActivity
方法上。我认为这不是一个错误,而是一个故意的限制;我想知道背后的原因。
我应该注意;这个限制(截至目前)实际上似乎对使用ContextThemeWrapper
的代码没有影响。它编译并运行良好,并按照我的预期运行。
答案 0 :(得分:57)
android.view.ContextThemeWrapper
!= android.support.v7.view.ContextThemeWrapper
。
支持库1带有注释@RestrictTo(LIBRARY_GROUP)
,还有@hide
- 它不是公共API。
第一个是公开的。