#android #android-theme
Вопрос:
Я определил глухую тему для всего приложения в манифесте:
lt;application android:name="com.my.app" android:allowBackup="false" android:theme="@style/AppTheme"gt;
Все работало так, как ожидалось, пока я не добавил в проект новую библиотеку AAR. После этого момента мои настройки темы игнорируются, независимо от того, определил ли я их в Application
теге или для каждого отдельного Activity
пользователя .
Внутри моего приложения у меня есть только один экземпляр styles.xml
(где определена тема приложения) в разделе res/values
путь. Библиотека AAR, с другой стороны, имеет ту же тему, определенную в следующих местах: res/values/values.xml
, res/values-land/values-land.xml
, res/values-sw600dp-v13/values-sw600dp-v13.xml
.
Итак, я предполагаю, что мой вопрос заключается в том, как я могу предотвратить, чтобы тема из библиотечного модуля переопределяла мою собственную тему?
Комментарии:
1. в качестве взлома попробуйте изменить название темы и проверьте, является ли она переопределяющей .
2. @Manohar, это сработало как обходной путь. Интересно, что как только я изменил название своей темы, сборка завершилась неудачно и меня попросили добавить
tools:replace="android:theme"
в манифест. Итак, это похоже на ошибку: когда тема приложения и тема библиотеки имеют одинаковые имена, слияние манифеста не может различить их. Интересно, существует ли допустимый вариант использования этого подхода. В любом случае, пожалуйста, опубликуйте свой обходной путь в качестве ответа.3. Приятно знать , что это сработало, я опубликую ответ, как вы предложили, для будущих читателей .
Ответ №1:
AppTheme-это общее имя , используемое для темы, скорее всего, библиотека также использует то же имя темы, изменение имени вашей темы должно решить проблему .
В качестве альтернативы вы также можете добавить tools:replace="android:theme"
в манифест .
Комментарии:
1. Уточнение: простое добавление
tools:replace="android:theme"
в манифест не решило мою проблему. Только после того, как я изменил название своей темы, эта настройка стала актуальной. Это похоже на ошибку в цепочке инструментов сборки.