web-dev-qa-db-fra.com

Modifier la couleur d'arrière-plan de la barre d'action à l'aide d'AppCompat

J'ai trouvé quelques questions sur ce problème sur le Web. Malheureusement, tout ce que j'ai essayé jusqu'à présent n'a pas abouti.

Est-ce que le titre dit, je dois changer la couleur de fond de ma barre d'action.

Le projet a un sdk minimum de 9 et un sdk maximum de 19.

J'ai créer dans mon dossier res/values ​​un fichier 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>

le colors.xml stocké dans res/values

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

et la partie du manifeste où je change de thème

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

Mais rien ne change. Où est le problème? L'application accepte le code car si je change cela:

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

à

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

cela change le thème de mon application, donc le problème est dans le style mais je ne sais pas comment le résoudre.

<?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>
45
Bombolo
<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>

vous avez besoin des deux Android:background et background éléments. Le premier est pour les versions plus récentes de Android qui supporte ActionBar de manière native. Le dernier est pour les anciennes Android versions.

MODIFIER

au lieu de <resources> utilisation

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

À partir du SDK 21

pour changer la couleur d'arrière-plan de la barre d'action, ajoutez ceci à ActionBarTheme, et les deux couleurs doivent être différentes ou cela ne fonctionnera pas (grâce à @Dre et @lagoman)

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

Essaye ça:

<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>
19
Zohra Khan

Essaye ça.

<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
    <item name="colorPrimary"> #6699FF </item>
</style>

Vous pouvez changer #6699FF coloriez selon votre choix (ou utilisez une ressource de couleur).

9
Mukul Aggarwal

essayez d'utiliser

parent="Theme.AppCompat.Light"

au lieu de

parent="@style/Theme.AppCompat.Light"
1
heloisasim