【发布时间】:2020-07-02 04:53:56
【问题描述】:
我正在尝试创建一个设置选项,允许用户选择应用程序是处于夜间模式、白天模式还是遵循系统默认设置。为了向用户显示当前设置,我需要从系统中获取它。但是我在下面使用的代码总是返回MODE_NIGHT_UNSPECIFIED。我在这里做错了吗?
我有以下代码:
val x = AppCompatDelegate.getDefaultNightMode()
when (x) {
AppCompatDelegate.MODE_NIGHT_NO -> {"testsadflke- MODE_NIGHT_NO".log()}
AppCompatDelegate.MODE_NIGHT_YES -> {"testsadflke- MODE_NIGHT_YES".log()}
AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY -> {"testsadflke- MODE_NIGHT_AUTO_BATTERY".log()}
AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM -> {"testsadflke- MODE_NIGHT_FOLLOW_SYSTEM".log()}
AppCompatDelegate.MODE_NIGHT_UNSPECIFIED -> {"testsadflke- MODE_NIGHT_UNSPECIFIED".log()}
}
日志输出为:
2020-07-01 21:47:08.751 6783-6783/com.example.macrotracker D/(AnyExt.kt:6)log(): Object: testsadflke- MODE_NIGHT_UNSPECIFIED
但是我认为这是不正确的,因为我的 appTheme 扩展了 Material DayNight 主题。此外,当我启用或禁用夜间模式时,我的应用会更改主题,因此它必须遵循系统模式。任何帮助将不胜感激!
【问题讨论】:
-
你自己打电话给
AppCompatDelegate.setDefaultNightMode吗? -
我在调用
AppCompatDelegate.setDefaultNightMode之前调用了这个。我想,由于我的应用正在根据设备日/夜主题更改主题,getDefaultNightMode应该返回MODE_NIGHT_FOLLOW_SYSTEM。
标签: android android-appcompat android-theme android-dark-theme android-night-mode