🔥

android:windowLightStatusBarを動的に変更する

2020/12/06に公開

XMLで静的に設定する場合は以下のように書く。

<item name="android:windowLightStatusBar">true</item>

コード上で動的に変更する場合は以下のように書く。

// Light
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    window.insetsController?.setSystemBarsAppearance(
        WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS,
        WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
    )
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    window.decorView.systemUiVisibility =
        window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}

// Dark
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    window.insetsController?.setSystemBarsAppearance(
        0,
        WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
    )
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    window.decorView.systemUiVisibility =
        window.decorView.systemUiVisibility and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv()
}

Discussion