Тема менялась вместе с системной темой

У большинства программ есть выбор между Тёмной и Светлой темой. Некоторые программы не имея пункта Системная тема все равно меняются вместе с системой. Где нужно подправить код (xml) что бы тема менялась вместе с системной темой?


Ответы (1 шт):

Автор решения: Andrew

Ну если исключить из задачи написание за вас стилей для темы, то отловить текущий режим (темный/светлый) можно так:

switch (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) {
    case Configuration.UI_MODE_NIGHT_YES:
       //process
        break;
    case Configuration.UI_MODE_NIGHT_NO:
        // process
        break; 
}

дальше вы на момент загрузки приложения проверяете статус и дальше используете тему которая соответствует цветности. Плюс нужно в манифесте установить прослушивание изменений данного параметра:

<activity
    android:name=".MyActivity"
    android:configChanges="uiMode" />

Вот есть документация по вашему вопросу и туториал как реализовать подобный функционал.

→ Ссылка