4

When i'm using the item actionBarStyle, colorPrimary doesn't set the color to red. If i delete the item actionBarStyle, it works. How can i change my code to display the color?

<resources>

    <style name="AppTheme" parent="@style/Theme.AppCompat.Light">
        <item name="actionBarStyle">@style/MyStyledActionBar</item>
        <item name="colorPrimary">@color/red</item>
    </style>

    <style name="MyStyledActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
        <item name="titleTextStyle">@style/MyActionBarTitleText</item>
    </style>

    <style name="MyActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">@color/white</item>
    </style>

</resources>
  • I didn't need to use Widget but just [set the app theme that included colorPrimary in the manifest file](http://stackoverflow.com/a/39341616/3681880). – Suragch Sep 06 '16 at 06:11

1 Answers1

6

The root of Widget.AppCompat.Light.ActionBar is Base.Widget.AppCompat.ActionBar, which doesn't apply a background attribute.

<style name="Base.Widget.AppCompat.ActionBar" parent="">
    ...
    <item name="background">@null</item>
    <item name="backgroundStacked">@null</item>
    <item name="backgroundSplit">@null</item>
    ...
</style>

Instead your parent should be Widget.AppCompat.Light.ActionBar.Solid, so that you'll inherit the attributes from Base.Widget.AppCompat.Light.ActionBar.Solid, which applies the background attribute.

<style name="Base.Widget.AppCompat.Light.ActionBar.Solid">
    <item name="background">?attr/colorPrimary</item>
    <item name="backgroundStacked">?attr/colorPrimary</item>
    <item name="backgroundSplit">?attr/colorPrimary</item>
</style>

Alternatively, you could just apply the background attribute yourself.

<style name="MyStyledActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
    <item name="titleTextStyle">@style/MyActionBarTitleText</item>
    <item name="background">?attr/colorPrimary</item>
</style>
adneal
  • 30,484
  • 10
  • 122
  • 151