I am applying the theme Theme.AppCompat.DayNight.NoActionBar to my application.
In the light theme, I want the status bar to be white and in the dark theme, I want it to be dark.
I can't get the status bar to be white and the letters to be dark and vice versa.
This is my style:
<style name="AppTheme.Base" parent="Theme.AppCompat.DayNight.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="colorControlNormal">@color/primary_dark</item>
<item name="colorControlHighlight">@color/primary_dark</item>
<item name="android:textColorPrimary">@color/letter_medium_emphasis</item>
<item name="android:textColorSecondary">@color/letter_high_emphasis</item>
</style>
and this is my color file:
<resources>
<color name="primary">#ffffff</color>
<color name="primary_dark">#0336ff</color>
<color name="letter_high_emphasis">#de000000</color>
<color name="letter_medium_emphasis">#99000000</color>
<color name="letter_medium_disabled">#61000000</color>
</resources>
I have tried adding the parameter
<item name="android:statusBarColor">@color/primary</item>
But I still get the same thing, the status bar is white and the status bar text is also white.
What is the way to show the white status bar with dark letters in the light theme and vice versa in the dark theme?
You can use
isLightThemeattr:https://developer.android.com/reference/android/R.attr#isLightTheme
Add it to your themes.xml like so:
The value returned by
?attr/isLightThemeis handled by the system. You can also get the currently set value via:OR
Together with
android:statusBarColoryou can control your status bar in both light and dark theme automatically.Also, I had much better luck using
parent="Theme.MaterialComponents.DayNight"for my base theme when using this attr value.