37 votes

Modifier la couleur de fond de la barre d'action (ActionBarSherlock)

J'essaie de mettre en œuvre ActionBarSherlock car on m'a dit qu'il était relativement facile à mettre en œuvre et à personnaliser. J'ai constaté qu'il était assez facile à mettre en œuvre, mais j'essaie de modifier la couleur d'arrière-plan de la barre d'action et cela s'avère difficile.

Selon le site ( lien ), il semble que vous puissiez hériter de l'un des thèmes de l'ActionBarSherlock, puis modifier les propriétés dont vous avez besoin.

Voici ce que j'ai jusqu'à présent :

<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <style name="Theme.ActionBar" parent="Theme.Sherlock.ForceOverflow">
      <item name="android:background">#000000</item>
      <item name="background">#000000</item>
    </style>
</resources>

Je remarque que les thèmes intégrés utilisent des images pour l'arrière-plan, mais j'espère que je n'aurai pas à créer des images pour changer la couleur de l'arrière-plan.

Gracias.

77voto

Jake Wharton Points 26095

La couleur d'arrière-plan de la barre d'action est définie dans un style pour la barre d'action, et non dans le thème lui-même. Vous devrez faire quelque chose comme ceci :

<style name="Theme.MyTheme" parent="Theme.Sherlock.ForceOverflow">
    <item name="actionBarStyle">@style/Widget.MyTheme.ActionBar</item>
    <item name="android:actionBarStyle">@style/Widget.MyTheme.ActionBar</item>
</style>

<style name="Widget.MyTheme.ActionBar" parent="Widget.Sherlock.ActionBar">
    <item name="android:background">#ff000000</item>
    <item name="background">#ff000000</item>
</style>

Faites attention à l'utilisation des couleurs définies en XML. ColorDrawable ne respectait pas les limites d'affichage sur les versions pré-Honeycomb. Par conséquent, si vous utilisez une navigation par onglets avec un arrière-plan distinct pour l'affichage des onglets empilés, vous aurez des problèmes.

54voto

alicanbatur Points 1122

J'ai juste utilisé

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00853c")));

Cela a changé la couleur du fond. J'espère que cela vous aidera.

2voto

aagam94 Points 137

Le code mentionné par Jake Wharton est vrai. Mais lorsque vous appliquez le code au styles.xml, cela peut ne pas fonctionner si vous avez minSDK<11 car Android:actionBarStyle est supporté dans API-11+.

Pour résoudre cette erreur :

Créez un dossier values-v11 dans votre dossier res et créez le fichier XML comme mentionné ci-dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X