Я начал использовать ContextThemeWrapper
для динамического применения стиля к ImageButton
; основанный ответ на мой другой вопрос и ответы на другие похожие вопросы.
ContextThemeWrapper wrapper = new ContextThemeWrapper(getContext(), mStyleRes);
mImageButton = new AppCompatImageButton(wrapper, null, 0);
Но недавно в конструкторе ContextThemeWrapper
появилась ошибка lint, указав:
ContextThemeWrapper
может быть вызван только из одной библиотеки group (groupId = com.android.support)
Я заметил, что класс, помеченный аннотацией @RestrictTo(LIBRARY_GROUP)
, вызывающий появление ошибки lint. Но я не могу найти никакой информации о том, почему он ограничен библиотекой com.android.support
.
Насколько я могу судить, это единственный способ программно применить стиль, тему или тему на View
; кроме установки атрибута стиля по умолчанию в качестве третьего аргумента в конструкторе. Поэтому мне интересно, почему его использование будет ограничено вообще; есть ли проблема с использованием класса вне библиотек поддержки? Могут ли быть побочные эффекты, о которых я не знаю?
Единственный похожий вопрос, с которым я столкнулся, - это ошибка (теперь исправлена); что вызвало эту ошибку lint для отображения в методе onCreate
подкласса AppCompatActivity
. Я не думаю, что это явление является ошибкой, а скорее преднамеренным ограничением; о котором я хотел бы узнать рассуждения.
Я должен отметить; это ограничение (на данный момент) фактически не влияет на код с использованием ContextThemeWrapper
. Он компилируется и работает отлично, и работает так, как я ожидал.