#android #android-theme #android-styles #android-dark-theme #kotlin-android
Вопрос:
Я не могу переключить тему, хотя при изменении опции также работает нормально, общие настройки сохраняют правильное значение для последней выбранной темы.
MyApp.kt
class MyApp : Application() { override fun onCreate() { super.onCreate() AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.getDefaultNightMode()) } }
Theme.xml
lt;style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar"gt; lt;item name="colorPrimary"gt;@color/colorPrimarylt;/itemgt; lt;item name="colorPrimaryDark"gt;@color/colorPrimaryDarklt;/itemgt; lt;item name="colorAccent"gt;@color/colorAccentlt;/itemgt; lt;item name="android:windowTranslucentNavigation"gt;truelt;/itemgt; lt;item name="android:navigationBarColor"gt;@android:color/transparentlt;/itemgt; lt;/stylegt;
Основная активность.тыс. т
binding.themeGroup.setOnCheckedChangeListener { _, checkedId -gt; when (checkedId) { R.id.themeLight -gt; setTheme(AppCompatDelegate.MODE_NIGHT_NO, THEME_LIGHT) R.id.themeDark -gt; setTheme(AppCompatDelegate.MODE_NIGHT_YES, THEME_DARK) R.id.themeBattery -gt; setTheme(AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY, THEME_BATTERY) R.id.themeSystem -gt; setTheme(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM, THEME_SYSTEM) } } private fun setTheme(themeMode: Int, prefsMode: Int) { AppCompatDelegate.setDefaultNightMode(themeMode) storeTheme(prefsMode) //activity?.recreate() // no luck w/o commenting }
У меня есть 2 папки, values
и values-night
. Каждый из них имеет соответствующие цвета. Внутри есть только 1 theme.xml
values
папка.