Ответ
Да, работал. На Android можно настраивать тему через styles.xml и themes.xml.
Пример:
<!-- styles.xml -->
<style name="AppTheme" parent="Theme.Material3.DayNight">
<item name="colorPrimary">@color/purple_500</item>
<item name="colorOnPrimary">@color/white</item>
</style>
Нюансы:
- Day/Night темы – можно использовать
Theme.Material3.DayNightи переопределять цвета вres/values-night. - Динамические цвета (Android 12+) – Material You (
Theme.Material3.DynamicColors). - Кастомные атрибуты – для сложных тем можно создавать свои атрибуты в
attrs.xml.
Применение в манифесте:
<application android:theme="@style/AppTheme" ... />
Для программного изменения темы (например, переключение светлой/тёмной):
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) Ответ 18+ 🔞
Блин, ну вот же, работал же! На Андроиде темы настраиваются через эти ваши styles.xml и themes.xml. Всё просто, как три копейки.
Смотри, пример:
<!-- styles.xml -->
<style name="AppTheme" parent="Theme.Material3.DayNight">
<item name="colorPrimary">@color/purple_500</item>
<item name="colorOnPrimary">@color/white</item>
</style>
Но есть нюансы, ёпта:
- День и ночь – можно взять
Theme.Material3.DayNightи в папкеres/values-nightпод тем же самым именем перебить цвета для тёмной темы. Удобно, блядь. - Динамические цвета (для Андроида 12 и выше) – это когда система сама цвета из обоев вытягивает. Material You называется,
Theme.Material3.DynamicColors. Красиво, но не везде работает. - Свои атрибуты – если совсем припёрло и стандартного не хватает, можно в
attrs.xmlсвои костыли наколотить. Для особо хитрожопых случаев.
Чтобы тему применить, в манифесте пишешь:
<application android:theme="@style/AppTheme" ... />
А если надо программно сменить, например, юзер тёмную тему захотел:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
Вот и вся магия. Главное — не запутаться в этих папках values и values-night, а то сам от себя охуеешь, когда светлая тема в ночи светит, как прожектор.