0

我为我的应用程序实现了暗模式。在设置中可以设置。然后它从 sharedprefs 加载您的选项并使用AppCompatDelegate.setDefaultNightMode. 我为此创建了一个函数,我在每个活动开始时都会调用它。

fun setAppTheme(context: Context) {
      AppCompatDelegate.setDefaultNightMode(when(PreferenceManager.getDefaultSharedPreferences(context).getString("theme", "default")) {
        "light" -> AppCompatDelegate.MODE_NIGHT_NO
        "dark" -> AppCompatDelegate.MODE_NIGHT_YES
        "default" -> AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
        else -> AppCompatDelegate.MODE_NIGHT_YES
    })
}

当我将其设置为跟随系统时效果很好,所有颜色都正确,但是当我将其设置为强制夜间模式并将系统模式更改为亮时,回收站视图项目都是亮的(应该是暗的!)

我读了这个这个,尝试使用所有不同的上下文,但没有任何帮助。

4

1 回答 1

0

我想到了。问题是我setAppTheme之前super.onCreate()在主要活动中调用了该函数。我的错。这现在有效:

...
override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setAppTheme(this)
...
于 2021-01-04T19:07:02.733 回答