web-dev-qa-db-fra.com

ActionBarSherlock - arrière-plan personnalisé de la barre d'action avec diviseur

J'implémente ActionBarsherlock et je veux changer l'arrière-plan de la barre d'action.

Je remplace les propriétés mais le séparateur bleu disparaît. Comment puis-je utiliser un arrière-plan personnalisé avec le séparateur bleu?

<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">#ff3e3f3d</item>
    <item name="background">#ff3e3f3d</item>
</style>
31
ikarius

Pour ceux qui (comme moi) n'aiment pas jouer avec des images à 9 patchs, vous pouvez obtenir le séparateur au bas de la barre d'action en utilisant un dessin xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <!-- Bottom Line -->
    <item>
        <shape Android:shape="rectangle">
            <solid Android:color="@color/action_bar_line_color" />
        </shape>
    </item>

    <!-- Color of your action bar -->
    <item Android:bottom="2dip">
        <shape Android:shape="rectangle">
            <solid Android:color="@color/action_bar_color" />
        </shape>
    </item>
</layer-list>

Enregistrez-le sous drawable/action_bar_background.xml, puis appliquez-le dans votre thème:

<style name="Widget.MyTheme.ActionBar" parent="Widget.Sherlock.ActionBar">
    <item name="Android:background">@drawable/action_bar_background</item>
    <item name="background">@drawable/action_bar_background</item>
</style>
76
DanielGrech

http://jgilfelt.github.io/Android-actionbarstylegenerator/

Ce projet peut être utilisé pour générer le style ActionBar dont vous avez besoin.

17
kzotin

Le séparateur bleu est l'arrière-plan par défaut. C'est un patch à 9 patchs qui garantira que la ligne apparaît toujours au bas de la barre d'action, quelle que soit sa hauteur.

Pour votre situation, je copierais l'arrière-plan par défaut .pngs de Android puis modifiez-les de sorte que la section extensible du patch 9 soit votre couleur d'arrière-plan cible. Cela remplira la barre d'action avec la couleur souhaitée tout en conservant la bordure bleue à la bas.

7
Jake Wharton

Juste une mise à jour sur la réponse fournie par DanielGrech. Il est également possible d'utiliser votre propre graphique personnalisé au bas de la barre d'actions. Comme ça:

    <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <!-- Bottom Line with custom graphic instead of a solid color-->
    <item Android:drawable="@drawable/bar">
          <shape Android:shape="rectangle"/>
    </item>

    <!-- Color of your action bar -->
    <item Android:bottom="2dip">
        <shape Android:shape="rectangle">
            <solid Android:color="@color/action_bar_color" />
        </shape>
    </item>
</layer-list>
3
Jordy