I'm changing status bar color and text between fragments/activities. For black status bar I need white text and viceversa. Due to api deprecation on Android 11 I am using this:
Dark status bar with light text:
Window window = getWindow();
if (mDefaultStatusBarColor == null) {
mDefaultStatusBarColor = window.getStatusBarColor();
}
window.setStatusBarColor(ContextCompat.getColor(this, R.color.black));
// Sets status text light
View decorView = window.getDecorView();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
WindowInsetsController wic = decorView.getWindowInsetsController();
wic.setSystemBarsAppearance(0, APPEARANCE_LIGHT_STATUS_BARS);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
decorView.setSystemUiVisibility(decorView.getSystemUiVisibility() & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
Changing to light status bar with dark text:
Window window = getWindow();
// Giving the status bar its default color.
if (mDefaultStatusBarColor != null) {
window.setStatusBarColor(mDefaultStatusBarColor);
}
// Sets status text dark
View decorView = window.getDecorView();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
WindowInsetsController wic = decorView.getWindowInsetsController();
wic.setSystemBarsAppearance(APPEARANCE_LIGHT_STATUS_BARS, APPEARANCE_LIGHT_STATUS_BARS);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
But the first case (dark status bar with light text) is not working properly because text is still dark.
Did I miss to add something?