Issue
I want to change the color of status bar when api level is 21 and higher. It's not working for me. I'm also using supportActionBar
. I'm using the codes below:
values/styles.xml
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<style name="MyTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="windowNoTitle">true</item>
<!-- colorPrimary is used for the default action bar background -->
<item name="colorPrimary">@color/primary</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">@color/primary_dark</item>
<!-- colorAccent is used as the default value for colorControlActivated
which is used to tint widgets -->
<item name="colorAccent">@color/accent</item>
<!-- You can also set colorControlNormal, colorControlActivated
colorControlHighlight and colorSwitchThumbNormal. -->
<item name="android:textColorPrimary">@color/primary_text</item>
<item name="android:textColorSecondary">@color/secondary_text</item>
</style>
<!-- Application theme. -->
<style name="MyTheme" parent="MyTheme.Base">
</style>
<style name="MyTheme.ToolBar" parent="MyTheme.Base">
<item name="android:textColorPrimary">@android:color/white</item>
<item name="android:textColorSecondary">@android:color/white</item>
</style>
<style name="MyTheme.NavMenu" parent="MyTheme.Base">
<item name="android:textColorPrimary">@color/gray</item>
</style>
<style name="MyTheme.RightMenu" parent="MyTheme.Base">
<item name="android:textColorPrimary">@color/black</item>
</style>
</resources>
In manifest file I set android:theme="@style/MyTheme"
values-v21/styles.xml
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<style name="MyTheme" parent="MyTheme.Base">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@color/primary_dark</item>
<item name="android:windowContentTransitions">true</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
<item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
<item name="android:windowSharedElementExitTransition">@android:transition/move</item>
</style>
</resources>
This is my colors file:
<resources>
<color name="primary">#3F51B5</color>
<color name="primary_dark">#303F9F</color>
<color name="primary_light">#C5CAE9</color>
<color name="accent">#FFC107</color>
<color name="primary_text">#212121</color>
<color name="secondary_text">#727272</color>
<color name="icons">#FFFFFF</color>
<color name="divider">#B6B6B6</color>
</resources>
What's wrong with my styles and why isn't it changing status bar color??
Solution
As I'm using Xamarin adding these lines in the base activity solved the problem:
Window window = this.Window;
window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
For Java refer to this question on SO.
Answered By - Vahid Amiri
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.