Подтвердить что ты не робот

Почему ContextThemeWrapper теперь ограничен группой поддержки?

Я начал использовать 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. Он компилируется и работает отлично, и работает так, как я ожидал.

4b9b3361

Ответ 1

android.view.ContextThemeWrapper!= android.support.v7.view.ContextThemeWrapper.

Поддержка библиотеки поддержки аннотируется @RestrictTo(LIBRARY_GROUP), а также @hide - она ​​не должна быть общедоступным API.

Первый публичный.