Mude a cor de fundo da barra de ação usando AppCompat

? Bombolo @ | Original: StackOverFlow
---

Eu encontrei algumas perguntas sobre este problema em torno da web. Infelizmente, tudo que eu tento, até agora, não foi bem sucedida .

Tem o título diz, eu preciso mudar a cor da minha barra de ações do fundo.

O projeto tem um min SDK, de 9, e max SDK de 19 .

Tenho criar na minha pasta res / valores, um arquivo xml:

red_actionbar.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light">

        <item name="actionBarStyle">@style/MyActionBar</item>

    </style>

    <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">


        <item name="background">@color/red</item>

    </style>

</resources>

o colors.xml armazenados em RES / valores

<resources>
   <color name="red">#FF0000</color>
</resources>

ea parte do manifesto onde eu mudar o tema

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/CustomActionBarTheme" >

Mas a mudança de nada.

Onde está o problema?

A aplicação aceitar o código, porque se eu mudar

        <style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light">

to

        <style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar ">

que mudar o tema do meu app, então o problema é no estilo, mas eu não sei hw para resolvê-lo

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light">
    <item name="android:actionBarStyle"   tools:ignore="NewApi">@style/MyActionBar</item>
    <item name="actionBarStyle">@style/MyActionBar</item>

</style>

<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background"  tools:ignore="NewApi">@color/red</item>
    <item name="background">@color/red</item>
</style>

</resources>
---

Top 5 Responder

1Zohra Khan @

Try this:

<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="actionBarStyle">@style/MyActionBar</item>

</style>

<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">

    <item name="android:background">@color/red</item>
    <item name="background">@color/red</item>

</style>
2Blackbelt @
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background"  tools:ignore="NewApi">@color/red</item>
    <item name="background">@color/red</item>
</style>

<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light">
    <item name="android:actionBarStyle"   tools:ignore="NewApi">@style/MyActionBar</item>
    <item name="actionBarStyle">@style/MyActionBar</item>

</style>

você precisa de ambos os itens android:background e background . O primeiro é para as versões mais recentes do Android que suportam ActionBar nativamente . O último é para as versões mais antigas do Android .

EDIT

em vez de <resources> uso

<resources xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">

From SDK 21

para mudar a cor de fundo da barra de ação, adicione a ActionBarTheme, e as duas cores devem ser diferentes ou não vai funcionar (graças a @Dre e @lagoman )

<item name="colorPrimary">@color/my_awesome_red</item> 
<item name="colorPrimaryDark">@color/my_awesome_darker_red</item>