Это простое и оптимальное решение для реализации темы День / Ночь для вашего приложения. Пожалуйста, следуйте инструкциям.
Шаг первый: перейдите на тему DayNight
Перейдите к файлу стилей. xml и измените родительскую тему на DayNight
<style name="LaunchTheme" parent="Theme.AppCompat.DayNight">
<!-- Theme attributes -->
</style>
Это позволит вашему приложению обнаруживать изменения конфигурации дня и ночи. Примечание. Как и другие темы, эта тема также имеет свои варианты, такие как Theme.AppCompat.DayNight.NoActionBar
Шаг второй: добавьте атрибуты в свою тему DayNight
<style name="LaunchTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<!-- Other attributes might be present here by default such as 'colorPrimary' -->
<!-- These colors are going to be defined on next step -->
<item name="android:textColor">@color/textColor</item>
<item name="android:windowBackground">@color/windowBackgroundColor</item>
</style>
Для этого Например, мы используем атрибуты textColor и windowBackground. textColor является атрибутом цвета по умолчанию для всего приложения, а windowBackground является атрибутом по умолчанию для фонов окон деятельности.
Позже вы можете выбрать другой подход в зависимости от ваших потребностей и понимания тем и стилей.
Шаг третий: определение цветов
Перейдите к своим цветам. xml и добавьте эти цвета.
<resources>
<color name="textColor">#000000</color>
<color name="windowBackgroundColor">#FFFFFF</color>
</resources>
Шаг четвертый: Создайте файл цветов ночного квалификатора
Как это делается в Android Studio: Щелкните правой кнопкой мыши папку значений -> Создать -> Файл ресурсов значений, назовите свой файл 'colors' и добавьте в него NightMode Qualifier.
Это, если не существует, создаст папку 'values-night' и цвета. xml в ней.
Если этот подход невозможно в IDE, которую вы используете для разработки Xamarin, пожалуйста, создайте файлы вручную: в папке 'res' создайте папку 'values-night'. А затем создайте файл 'colors. xml' в папке 'values-night'.
Шаг пятый: Определите те же цвета в файле квалифицированных цветов NightMode
Перейдите во вновь созданные цвета. xml файл в папке «values-night» и добавьте эти цвета.
<resources>
<color name="textColor">#FFFFFF</color>
<color name="windowBackgroundColor">#000000</color>
</resources>
Обратите внимание, что имена цветовых ресурсов одинаковы, но имеют разные значения.
Шаг шестой: используйте тему
Установите стиль, который вы определили на первом этапе, в качестве темы для всего приложения или в качестве темы деятельности Spla sh. (Вы уже сделали это)
Готово, ваше приложение теперь будет реагировать на настройки день / ночь.
Тестирование
Запустить проект на устройстве с Android version> = Q и включением / выключением ночного режима устройств.
или добавьте этот код в функцию onCreate класса вашего приложения
AppCompatDelegate.setDefaultNightMode(
AppCompatDelegate.MODE_NIGHT_YES); // This code will force night mode configuration for your app. Add it to see how your app looks in night mode.
AppCompatDelegate.setDefaultNightMode(
AppCompatDelegate.MODE_NIGHT_NO); // This code will force day mode configuration for your app. Add it to see how your app looks in day mode.
Важно. Убедитесь, что вы не переопределяете ожидаемый визуальный результат, например, устанавливая жестко закодированное значение цвета непосредственно в TextView.