17

Android 11 (API レベル 30) より前の <item name="android:windowLightStatusBar">true</item> テーマで設定し、コードでこれを (必要に応じて) 追加で変更していました。

fun setLightStatusBar(){ 
    window?.decorView?.let { it.systemUiVisibility = it.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR }
} 

fun setDarkStatusBar(){
    window?.decorView?.let { it.systemUiVisibility = it.systemUiVisibility and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv() }
}

ただし、Android-30 では新しい制御方法が追加されています。

fun setLightStatusBar(){ 
    window?.insetsController?.setSystemBarsAppearance(APPEARANCE_LIGHT_STATUS_BARS, APPEARANCE_LIGHT_STATUS_BARS)
} 

fun setDarkStatusBar(){
    window?.insetsController?.setSystemBarsAppearance(0, APPEARANCE_LIGHT_STATUS_BARS)
}

しかし、私の問題は、これがテーマ セットの値を上書きできないことです。そのため、すべてをスタイルで行うか、すべてをコードで行う必要があります。

私の質問は、これがこのようになることを意図しているのか、それともどこかで何かが欠けているのでしょうか?

4

2 に答える 2