actionBar background doesn't change

So I'm new to app developing and currently following a developer's guide on android.com. I'm stuck on "stylizing your actionBar" part, because the code suggested on the website doesn't work:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/MyActionBar</item>

        <!-- Support library compatibility -->
        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>

    <!-- ActionBar styles -->
    <style name="MyActionBar"
           parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:background">@drawable/actionbar_background</item>

        <!-- Support library compatibility -->
        <item name="background">@drawable/actionbar_background</item>
    </style>
</resources>

I get the compatibility error about android:backgound that can't be used since my minSdk is 7 (though the guide claims it should work). I don't want to change my minSdk, and I tried splitting the themes.xml into 2, one I put into values, and the other into values-v11. The error doesn't occur anymore, but when I run the app the actionBar doesn't change its backgroud. Here are the both files:

this one is in values

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@style/Theme.AppCompat.Light.DarkActionBar">

        <!-- Support library compatibility -->
        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>
    <style name="MyActionBar"
           parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <!-- Support library compatibility -->
        <item name="background">@drawable/actionbar_background</item>
    </style>
</resources>

and this one is in values-11

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/MyActionBar</item>   
    </style>
    <style name="MyActionBar"
           parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:background">#FFB300</item>
    </style>
</resources>

Do you have any idea what's the problem here?

The API lvl on my device is 21

Upvotes: 2

Views: 183

Answers (1)

ianhanniballake
ianhanniballake

Reputation: 199825

As of AppCompat v21, the android: attributes are no longer used. It also supports color theming, which provides a very easy way to set the color of the action bar (and status bar on Android 5.0 devices) using a very simple theme:

<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">  
    <!-- colorPrimary is used for the default action bar background -->
    <item name="colorPrimary">@color/my_awesome_color</item>

    <!-- colorPrimaryDark is used for the status bar -->
    <item name="colorPrimaryDark">@color/my_awesome_darker_color</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 & colorSwitchThumbNormal. -->
</style>  

Upvotes: 2

Related Questions