Это не так, как темный режим работает на Android 10.
Во-первых, Android магическим образом не добавляет .Dark
к вашей теме в любой момент, независимо от того, или нет пользователь включил темный режим. У вас есть android:theme="@style/AppTheme"
. Итак, Android будет использовать AppTheme
все время, а ваш AppTheme.Dark
не будет использоваться.
Во-вторых, идея DayNight
заключается в том, что вы используете это в качестве базовой темы все время и Android будет переключаться между обычным и темным режимами в зависимости от запроса пользователя. Итак, если вы переключите AppTheme
на расширение DayNight
и избавитесь от AppTheme.Dark
, вы будете соответствовать тому, что документация требует.
android:forceDarkAllowed
для случаев где вы не можете использовать тему DayNight
и хотите, чтобы Android попытался автоматически преобразовать ваш интерфейс в темную тему. Если вы хотите сохранить AppTheme
расширение Light
вместо DayNight
, это может сработать (лично я не пробовал его с темой MaterialComponents
). Но даже тогда, это будет только тогда, когда пользователь включил темный режим (например, нажал на плитку оттенка уведомления).
Например, в это пример приложения , я использую DayNight
для моей темы:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.DayNight">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
У меня есть различные определения для этих цветов в res/values/
и res/values-night/
. Я не использую forceDarkAllowed
. И когда пользователь переключает ночной режим, мой пользовательский интерфейс переходит от:

до:

Как можно ли сделать так, чтобы при запуске приложения MainActivity автоматически настраивалась на использование AppTheme.Dark (т. е. темного режима), используя android: forceDarkAllowed?
Нет.
Если вам все время нужна темная тема, используйте обычную тему (не Light
, не DayNight
).