我的应用中有如下四个主题
Theme.AppName
:每个主题都继承自的主题Theme.AppTheme.Launcher
:显示启动器屏幕,直到活动开始
创建,设置应用于清单Theme.AppName.Green
Theme.AppName.Dark
AndroidManifest.xml
<application
...
android:theme="@style/Theme.AppName.Green"
...>
<activity
...
android:theme="@style/Theme.AppName.Launcher"
...
>
...
</activity>
...
</application>
values/themes.xml
<!-- Base theme -->
<style name="Theme.AppName" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- System / Platform attributes -->
<item name="android:windowBackground">?android:colorBackground</item>
<item name="colorPrimaryDark">?colorPrimaryVariant</item>
<item name="colorAccent">?colorSecondary</item>
</style>
<!-- Launcher theme -->
<style name="Theme.AppName.Launcher" parent="Theme.AppName">
<item name="android:windowBackground">@drawable/splash_background</item>
<item name="colorPrimaryDark">@color/app_green_500</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:statusBarColor">@color/app_green_700</item>
</style>
<!-- Green theme. -->
<style name="Theme.AppName.Green" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Colors -->
<item name="colorPrimary">@color/app_green_500</item>
<item name="colorPrimaryVariant">@color/app_green_700</item>
<item name="colorSecondary">@color/app_amber_500</item>
<item name="colorSecondaryVariant">@color/app_amber_700</item>
<item name="android:colorBackground">@color/app_white</item>
<item name="colorSurface">@color/app_white</item>
<item name="colorError">@color/app_error</item>
<item name="colorOnPrimary">@color/app_white</item>
<item name="colorOnSecondary">@color/app_white</item>
<item name="colorOnBackground">@color/app_black</item>
<item name="colorOnSurface">@color/app_black</item>
<item name="colorOnError">@color/app_white</item>
<item name="android:statusBarColor">@color/app_green_700</item>
...
</style>
values-night/themes.xml
<style name="Theme.AppName.Dark" parent="Theme.AppName">
<!-- Colors -->
<item name="colorPrimary">@color/app_green_200</item>
<item name="colorPrimaryVariant">@color/app_green_700</item>
<item name="colorSecondary">@color/app_amber_200</item>
<item name="colorSurface">@color/app_black_grey</item>
<item name="android:colorBackground">@color/app_black_grey</item>
<item name="android:windowBackground">@color/app_black_grey</item>
</style>
MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
// reset to Green theme after using the Launcher theme
setTheme(R.style.Theme_AppName_Green)
...
}
面临的问题:
在 API级别23 中,当我执行以下操作
// in MainActivity onCreate
// setTheme(R.style.Theme_AppName_Green)
setTheme(R.style.Theme_AppName_Dark)
如果我改为关注
// in MainActivity onCreate
// setTheme(R.style.Theme_AppName_Green)
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
在 API级别29
设置系统范围的黑暗模式
如果我强迫使用以下深色主题
// in MainActivity onCreate
// setTheme(R.style.Theme_AppName_Green)
setTheme(R.style.Theme_AppName_Dark)
深色主题按预期出现。
所以我要实现的是
我尝试了不同的方法,但是无法按照我的意愿进行操作,请帮忙