2012-11-07 3 views
2

J'ai utilisé ce code pour changer la couleur de ActionBarSherlock:Modifier l'arrière-plan de ActionBarSherlock seul. Pas les onglets

<style name="Theme.MyTheme" parent="Theme.Sherlock.Light.DarkActionBar"> 

    <!-- set style for action bar (affects tab bar too) --> 
    <item name="actionBarStyle">@style/Widget.MyTheme.ActionBar</item> 
    <item name="android:actionBarStyle">@style/Widget.MyTheme.ActionBar</item> 
    <!-- define text style for tabs --> 
    <item name="actionBarTabTextStyle">@style/MyTheme.ActionBar.TabText</item> 
    <item name="android:actionBarTabTextStyle">@style/MyTheme.ActionBar.TabText</item> 
</style> 

<style name="Widget.MyTheme.ActionBar" parent="Widget.Sherlock.ActionBar"> 

    <!-- define background for action bar (sets default for all parts of action bar - main, stacked, split) --> 
    <item name="android:background">#blue</item> 
    <item name="background">#blue</item> 
    <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyleWhite</item> 
    <item name="titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyleWhite</item> 

    <!-- set background for the tab bar (stacked action bar) - it overrides the background property --> 
    <item name="android:backgroundStacked">#grey</item> 
    <item name="backgroundStacked">#grey</item> 
</style> 

<style name="MyTheme.ActionBar.TabText" parent="Widget.Sherlock.ActionBar.TabText"> 
    <item name="android:textColor">#black</item> 
</style> 

<style name="MyTheme.ActionBar.TitleTextStyleWhite" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> 
    <item name="android:textColor">#white</item> 
</style> 

comme suggéré par Jake Warton ici:

Change ActionBarSherlock background color

Mais la chose est ActionBar et onglets à la fois le changement de Bleu couleur. Je veux vraiment changer le haut fond actionbar Blue et onglets fond blanc à

comment faire?

Merci

Répondre

6

Utilisez ActionbarStyleGenerator pour changer la couleur de ce que tout ce que vous avez besoin. C'est de loin la manière la plus simple et la plus intuitive.

Comment:

  1. Utilisez l'interface utilisateur pour sélectionner la couleur pour les différents éléments.
  2. Une fois fait clic sur le téléchargement .zip
  3. ZIP contiendrait des fichiers de ressources dans les dossiers souhaités dont vous avez besoin de copier dans vos projets res/mise en page et res/dossiers drawableXXXX
+0

Je veux dire où utiliser ces drawables ?? Dans le thème personnalisé au lieu de couleurs ?? –

+0

Vous devez simplement copier sur les dossiers que vous téléchargez. Il fait tout le code pour vous. – PravinCG

+0

Ouais, merci beaucoup. Mais comment puis-je modifier la TextColor d'une Tab par programmation, comme si Tab est sélectionné TextColor doit être blanc, sinon gris. Ou est-il possible de faire dans le thème lui-même? –

2

Il y a deux façons comment vous pouvez changer de fond de la barre d'onglets:

1) Si vous utilisez les onglets uniquement en orientation portrait, vous pouvez définir backgroundStacked (et android:backgroundStacked) point de . Il définit l'arrière-plan de la barre d'action empilée (la barre d'onglets).

Votre thème doit contenir:

<style name="Theme.MyTheme" parent="Theme.Sherlock.Light.DarkActionBar"> 
    <!-- set style for action bar (affects tab bar too) --> 
    <item name="actionBarStyle">@style/Widget.MyTheme.ActionBar</item> 
    <item name="android:actionBarStyle">@style/Widget.MyTheme.ActionBar</item> 
</style> 

Le ActionBarStyle doit alors être:

<style name="Widget.MyTheme.ActionBar" parent="Widget.Sherlock.ActionBar"> 
    <!-- define background for action bar (sets default for all parts of action bar - main, stacked, split) --> 
    <item name="android:background">#ff0000ff</item> 
    <item name="background">#ff0000ff</item> 

    <!-- set background for the tab bar (stacked action bar) - it overrides the background property --> 
    <item name="android:backgroundStacked">#ffff</item> 
    <item name="backgroundStacked">#ffff</item> 
</style> 

C'est tout ce que vous avez à faire. Mais cette solution ne fonctionnera pas dans le paysage. En paysage, les onglets peuvent être déplacés vers la barre d'action principale.

2) Si vous utilisez des onglets en orientation portrait et paysage, une solution différente doit être utilisée.

Le thème doit contenir:

<style name="Theme.MyTheme" parent="Theme.Sherlock.ForceOverflow"> 
    <!-- set style for action bar --> 
    <item name="actionBarStyle">@style/Widget.MyTheme.ActionBar</item> 
    <item name="android:actionBarStyle">@style/Widget.MyTheme.ActionBar</item> 

    <!-- set the tab bar style --> 
    <item name="actionBarTabBarStyle">@style/Widget.MyTheme.TabBar</item> 
    <item name="android:actionBarTabBarStyle">@style/Widget.MyTheme.TabBar</item> 
</style> 

et arrière-plan définie pour le style de barre d'onglets:

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

Remarque: Si vous essayez de combiner les deux approches, l'arrière-plan de actionBarTabBarStyle sera placé sur l'arrière-plan de backgroundStacked.

Remarque: Ces deux approches définissent l'arrière-plan pour l'ensemble de la barre d'onglets, la définition de l'arrière-plan pour un seul onglet dans la barre d'onglets est différente.

couleur texte Tab

Si vous souhaitez définir la couleur du texte pour les onglets que vous avez à définir actionBarTabTextStyle.

Le thème doit contenir:

<style name="Theme.MyTheme" parent="Theme.Sherlock.Light.DarkActionBar"> 
    ... 
    <!-- define text style for tabs --> 
    <item name="actionBarTabTextStyle">@style/MyTheme.ActionBar.TabText</item> 
    <item name="android:actionBarTabTextStyle">@style/MyTheme.ActionBar.TabText</item> 
</style> 

Le style de texte de l'onglet est alors:

<style name="MyTheme.ActionBar.TabText" parent="Widget.Sherlock.ActionBar.TabText" > 
    <item name="android:textColor">#FF000000</item> 
</style> 
+0

J'ai ajouté le code complet. Le problème ici est backgroundcolor et textcolor fonctionne bien pour le ActionBar pas le TabsBar. Suis-je en utilisant le mauvais parent pour mon ActionBarTab –

+0

Vous combinez les styles à tort. Styling barre d'action est problématique et tout a sa place (et parfois inattendu). Par exemple 'backgroundStacked' n'a aucun effet dans' actionBarTabStyle' il doit faire partie de 'actionBarStyle'. La couleur du texte de l'onglet doit être définie différemment. Je vais mettre à jour la réponse. – Tomik

+0

Je l'ai fait exactement comme vous l'avez suggéré. Mais ici le problème est, la couleur de fond de l'actionBar est la même que la couleur TabBat i.e, gris, Le texte pour ActionBar et TabBar fonctionnent très bien. J'ai mis à jour la question avec le code que j'utilise en ce moment. Cela a été le principal problème, mon ActionBar et TabBar ont toujours la même couleur, auparavant c'était la même chose que la couleur ActionBar (bleu), après avoir utilisé votre code, la couleur TabBat pour les deux (gris) –

Questions connexes