2012-11-08 19 views
16

Ich habe Probleme mit dem Styling der ActionBar. Meine App hat eine ActionBar mit drei Tabs. Ich versuche, die ausgewählte Registerkarte mit einer Hintergrundfarbe und die nicht ausgewählten Registerkarten mit einer anderen Farbe zu versehen. Ich folge dieser Referenz: Customizing Action Bar. Aber alle TABs zeigen die ausgewählte Farbe an.So stylen Sie ActionBar, Registerkarte Hintergrund auf ausgewählten Registerkarte

Meine styles.xml Datei ist wie folgt:

<style name="MyActionBarTabStyle" parent="android:style/Widget.Holo.Light.ActionBar.TabBar"> 
    <item name="android:background">@drawable/tab_background</item> 
    <item name="android:paddingLeft">32dp</item> 
    <item name="android:paddingRight">32dp</item> 
</style> 

<style name="MyActionBarTabBarStyle" parent="android:style/Widget.Holo.Light.ActionBar.TabBar"> 

    <item name="android:background">@drawable/red</item> 
</style> 


<style name="AppTheme.Light" parent="@android:style/Theme.Holo.Light"> 
    <item name="android:actionBarStyle">@style/ActionBar.Light</item> 
    <item name="android:actionBarTabStyle">@style/MyActionBarTabStyle</item> 
    <item name="android:actionBarTabBarStyle">@style/MyActionBarTabBarStyle</item> 

</style> 

tab_background nur ein 9-Patch. Ich bin mir auch nicht sicher, ob ich die Registerkarte der Aktionsleiste vom korrekten Elternteil vererbe (parent="android:style/Widget.Holo.Light.ActionBar.TabBar). Ich habe die Referenzen durchgesehen & finde es sehr schwierig zu verstehen, die Stil-Hierarchie

Warum werden nicht meine Tabs ausgewählt oder nicht? Vielen Dank im Voraus für Ihre Unterstützung.

+0

Verwenden [ActionBarSherlockStyleGenerator] (http://jgilfelt.github.com/android-actionbarstylegenerator/ # name = beispiel & compat = holo & theme = licht & actionbarstyle = fest & backColor = E4E4E4,100 & secondaryColor = D6D6D6,100 & tertiäreFarbe = F2F2F2,100 & accentColor = 33B5E5.100) um es zu stylen und zu verwenden. Überprüfen Sie meine Antwort [hier] (http://stackoverflow.com/questions/13269482/change-background-of-the-actionbarsherlock-alone-not-the-tabs/13283261#13283261) – PravinCG

+0

Danke Pravin. Der ActionBarStyleGenerator ist sehr nützlich, um ActionBar zu formatieren – CocoNess

Antwort

10

Ich löste mein Problem. Ich habe ursprünglich keine State List Drawables verwendet. Ich habe das Hintergrundbild direkt verwendet, anstatt über die StateListDrawable zu gehen. Mit StateListDrawable können Sie abhängig davon, ob das Tag ausgewählt ist oder nicht, einen anderen Hintergrund festlegen.

So habe ich die Datei tab_background_select.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" 
     android:drawable="@drawable/tab_background" /> 

</selector> 

und ich referenzierten aus meiner styles.xml:

<item name="android:background">@drawable/tab_background_select</item> 
+0

Danke Dude;) +1 –

+3

Was meinst du damit, dass du dies aus styles.xml referenziert hast? Wie haben Sie darauf Bezug genommen und auf welche Weise? Wie mache ich das? Ich kann es nicht zur Arbeit bringen. Nichts funktioniert dafür, es ändert sich nie, egal was ich mache. Android scheint wirklich buggy. Welchen Elternteil hast du angesprochen? Wie hast du es genannt? Was hast du im Manifest erwähnt? –

+1

Schöne Antwort :) Verwenden Sie so, ' @ Drawable/tab_background_select ' – tenten

Verwandte Themen