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
    })
}

システムに従うように設定するとうまく機能し、すべての色が正しくなりますが、ナイトモードを強制するように設定し、システムモードをライトに変更すると、リサイクラービューのアイテムはすべて明るくなります(暗くなるはずです!)

thisthisを読み、さまざまなコンテキストをすべて使用してみましたが、何も役に立ちませんでした。

4

1 に答える 1

0

私はそれを考え出した。問題は、メインアクティビティのsetAppTheme直前に関数を呼び出していたことです。super.onCreate()私の悪い。これは今動作します:

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