我开始使用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。

第一个是公开的。

07-23 18:25