Правильный способ реализации функции ночного режима
Я знаю с помощью AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
ночной режим может быть реализован в деятельности. Но я хочу, чтобы в настройках была опция активации ночного режима во всех действиях и фрагментах в приложении. Как я могу это сделать?
2 ответа
Один из способов добиться этого:
Когда вы выбираете ночной режим действия в настройках активности (или любой другой), вы можете поддерживать флаг (и сохранять в общих настройках или в любом временном хранилище).
Проверьте этот флаг на каждом действии и фрагменте, и если флаг положительный, установите ночной режим, как вы использовали,
AppCompatDelegate.setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES);
Вы можете использовать NightModeHelper для этого, просто добавьте следующую строку в верхней части вашей деятельности onCreate
сразу после super.onCreate();
Идея в том, чтобы сделать это, прежде чем мы создадим какие-либо представления. Таким образом, новые представления будут использовать правильную конфигурацию.
mNightModeHelper = new NightModeHelper(this, R.style.AppTheme);
Смотрите демо здесь https://github.com/zouliping/AndroidNightMode