Windowbackground在黑暗和光线主题中不起作用



我有一个主题,用户可以选择浅色或黑暗,一切正常,但是有两个问题:

  1. 当我打开应用程序[以黑暗/光主题]打开应用时,首先显示白页,然后应用程序使用Dark主题
  2. 当我更改主题时,黑屏首先出现

我试图改变背景,但没有工作,我改变了它的颜色,也使用了可绘制的形状。无论如何,它不起作用,并且对两种颜色都使用。

style.xml

 <style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar"/>

values/themes.xml

<style name="Theme.MaterialComponents.DayNight.NoActionBar"
        parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowBackground">@drawable/window_background</item>
</style>

values-night/themes.xml

<style name="Theme.MaterialComponents.DayNight.NoActionBar"
        parent="Theme.MaterialComponents.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/TabBackground</item>
    <item name="colorAccent">@color/green_inactive</item>
    <item name="android:windowBackground">@drawable/window_background_dark</item>
</style>

Windows_background

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <solid android:color="#64b5f6"/>
</shape>

windows_background_dark

类似于上述代码,只有颜色不同

这就是我加载主题的方式

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (Prefs.getIsDarkMode(getApplicationContext()))
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
    else
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
    setContentView(R.layout.activity_main);
}

无需为背景创建单独的文件。

https://youtu.be/-qshe3tpjqw如果您在实施方面有任何问题,请删除消息。

相关内容

  • 没有找到相关文章

最新更新