我开始使用ContextThemeWrapper
将样式动态地应用于ImageButton
;基于an answer来解决我的另一个问题,并回答其他similar questions。
ContextThemeWrapper wrapper = new ContextThemeWrapper(getContext(), mStyleRes);
mImageButton = new AppCompatImageButton(wrapper, null, 0);
但是最近,在
ContextThemeWrapper
构造函数上开始出现一个 Lint 错误,指出:我注意到该类标记了
@RestrictTo(LIBRARY_GROUP)
批注,这导致出现 Lint 错误。但是我找不到关于为何将其限制在com.android.support
库组中的任何信息。据我所知,这是将样式,主题或主题叠加层以编程方式应用于
View
的唯一方法;除了将默认样式属性设置为构造函数中的第三个参数之外。所以我想知道为什么它的使用会受到限制。在支持库之外使用类是否有问题?可能会有我不知道的副作用吗?我遇到的唯一similar question是关于一个(现已修复)错误的错误。导致此 Lint 错误显示在
onCreate
的子类的AppCompatActivity
方法上。我认为这种情况不是错误,而是故意的限制;我想知道背后的原因。我应该注意这种限制(到目前为止)实际上似乎对使用
ContextThemeWrapper
的代码没有影响。它可以编译并运行良好,并且可以按我期望的那样工作。 最佳答案
android.view.ContextThemeWrapper
!= android.support.v7.view.ContextThemeWrapper
。
支持库一个被标记为@RestrictTo(LIBRARY_GROUP)
,另一个也被标记为@hide
-它并不意味着要成为公共(public)API。
第一个是公开的。