我在我的应用程序中使用 DayNight 材质主题实现了深色主题。我在互联网上关注了几篇文章和会议演讲。一切都很顺利,直到一些小事情开始发生。让我解释:
该应用程序有几个活动。为了不明确地为每个活动设置主题,我按照建议将初始主题设置放在我的应用程序的 onCreate() 方法中。不过,这有一个缺点,我将在下面解释。
1.) AppCompat 在活动级别实现夜间模式,这意味着它不会更新应用程序上下文(我用来设置主题应用程序范围)(来源:https ://issuetracker.google.com/issues/ 134379747 )
2.)建议使用以下代码来检查应用程序是否在哪种模式下运行。但在我的情况下,它返回完全相反的模式:
val currentNightMode = configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
when (currentNightMode) {
Configuration.UI_MODE_NIGHT_NO -> {} // Night mode is not active, we're using the light theme
Configuration.UI_MODE_NIGHT_YES -> {} // Night mode is active, we're using dark theme
}
3.)当我的应用程序设置为跟随系统,然后我手动切换到灯光模式(在应用程序中)然后返回跟随系统时,即使我的手机处于系统范围的黑暗主题,我的应用程序仍然保持明亮。但是,当切换我的应用程序主题时,它确实会发生变化。
我究竟做错了什么?可能的解决方案是将主题设置在活动级别上吗?