Windowbackground не работает в темной и светлой теме - PullRequest
1 голос
/ 02 июля 2019

привет, у меня есть тема, которую пользователь может выбрать светлый или темный, все работает нормально, но есть 2 проблемы:
1.При открытии приложения [в темной / светлой теме], сначала отображается белая страница, затем приложение использует темную тему
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);
}

1 Ответ

0 голосов
/ 02 июля 2019

Нет необходимости создавать отдельный файл для фона. Вы можете сделать это в темных и ночных xml-файлах. Проверьте ссылку ниже. Я реализовал ночной режим через это видео.

https://youtu.be/-qsHE3TpJqw Если у вас возникли проблемы с реализацией, отправьте сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...