使用 AppCompatDelegate 更改深色主题后无法检测它是否处于活动状态

时间:2021-04-01 00:26:41

标签: android android-dark-theme android-darkmode

我正在尝试实现一个选项,让用户指定他们是否希望应用程序根据系统设置(深色或浅色,即设备是否设置为使用深色模式)加载主题,但是我还提供了覆盖系统设置的可能性。

我可以在第一次启动应用程序时轻松找出此设置的方式,使用类似 thread 中指定的内容

然而,在强制主题后,这些似乎没用:

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)

更改主题后,我无法再获得系统设置,因为它总是会返回“darkmode on”,除非我再次强制它点亮主题,但在这里它总是会返回“darkmode off”! :(

知道如何获取系统设置吗?

提前致谢,
FF

2 个答案:

答案 0 :(得分:1)

<块引用>

更改主题后,我无法再获得系统设置,因为它总是会返回“darkmode on”,除非我再次强制它点亮主题,但在这里它总是会返回“darkmode off”! :(任何想法,如何获得系统设置?

要动态更改 Theme,您需要将 SharedPreferencesPreference 用于 PreferenceScreen。此 Github project 可以帮助您了解如何实施 Dark Theme

答案 1 :(得分:0)

根据 Kakyire 的回答,我发现了问题所在。
我假设只有两个选项可以传递给 AppCompatDelegate.setDefaultNightModeMODE_NIGHT_YESMODE_NIGHT_NO but the thing is, I needed to pass MODE_NIGHT_FOLLOW_SYSTEM when "use system" is selected.
我希望这可能对有相同“困难”的人有所帮助
快乐编码,
FF