Ändern Sie Hintergrundfarbe der Aktionsleiste mit AppCompat

? Bombolo @ | Original: StackOverFlow
---

Ich habe ein paar Fragen zu diesem Problem rund um das Web . Leider alles, was ich versuchen, so weit, unterlegen .

Hat den Titel sagen, ich brauche, um die Hintergrundfarbe meiner Aktionsleiste ändern.

Das Projekt haben eine min sdk von 9 und max sdk von 19 .

Ich habe in meinem erstellen res / Werte Ordner, eine XML-Datei :

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>

die Colors.xml in res / Werte gespeichert

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

und der Teil des Manifests, wo ich das Thema wechseln

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

Aber nichts zu ändern.

Wo ist das Problem?

Die Anwendung übernehmen Sie den Code da, wenn ich ändern

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

to

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

es das Thema meiner app zu ändern, so dass das Problem ist im Stil, aber ich weiß nicht, hw, sie zu lösen

<?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 Antwort

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>

Sie brauchen beide android:background und background Artikel . Ersteres ist nach neueren Versionen von Android, die ActionBar nativ unterstützt . Letzteres ist für ältere Android- Versionen .

EDIT

anstelle von <resources> Einsatz

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

From SDK 21

zum Aktionsleiste Hintergrundfarbe, fügen Sie diese zu ActionBarTheme und die beiden Farben sind anders zu sein oder es wird nicht funktionieren (dank @Dre und @lagoman )

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