web-dev-qa-db-fra.com

Changer la couleur d'arrière-plan ActionBarSherlock

J'essaie d'implémenter ActionBarSherlock car on m'a dit qu'il est relativement facile à implémenter et à personnaliser. J'ai trouvé qu'il était assez facile à implémenter, mais j'essaie de changer la couleur d'arrière-plan de l'ActionBar et cela s'avère difficile.

Selon le site ( link ), il semble que vous puissiez hériter de l'un des thèmes d'ActionBarSherlock, puis remplacer 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 le thème intégré utilise des images pour l'arrière-plan, mais je prie pour ne pas avoir à créer d'images pour changer la couleur d'arrière-plan.

Merci.

37
Kris B

La couleur d'arrière-plan de la barre d'action est définie dans un style pour la barre d'action, pas 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>

Soyez prudent en utilisant des couleurs définies en XML. ColorDrawable n'a pas respecté ses limites de vue sur pré-Honeycomb, donc si vous utilisez la navigation par onglets avec un arrière-plan distinct pour la vue des onglets empilés, vous aurez des problèmes.

77
Jake Wharton

Je viens d'utiliser

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

Cela a changé la couleur de fond. J'espère que cela aide.

54
alicanbatur

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

Pour résoudre cette erreur:

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

2
aagam94