2012-11-08 7 views
16

Mam problemy z stylizowaniem ActionBar. Moja aplikacja ma pasek akcji z trzema zakładkami. Próbuję ustawić, aby wybrana karta miała kolor tła, a niewyświetlone karty pokazywały inny kolor. Postępuję zgodnie z tym odniesieniem: Customizing Action Bar. Ale wszystkie tablice TAB pokazują wybrany kolor.Jak Style Actionbar, tło karty w wybranej zakładce

Mój plik styles.xml jest następujący:

<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 jest tylko 9 łata. Nie jestem również pewien, czy dziedziczę zakładkę paska akcji z właściwego rodzica (parent="android:style/Widget.Holo.Light.ActionBar.TabBar). Zapoznałem się z odnośnikami & bardzo trudno jest zrozumieć hierarchię stylów.

Dlaczego moje karty nie są wyświetlane lub nie? Z góry dzięki za pomoc.

+0

Użyj [ActionBarSherlockStyleGenerator] (http://jgilfelt.github.com/android-actionbarstylegenerator/ # name = example & compat = holo & theme = light & actionbarstyle = solid & backColor = E4E4E4,100 & secondaryColor = D6D6D6,100 & tertiaryColor = F2F2F2,100 & accentColor = 33B5E5,100), aby nadać mu styl i używać. Sprawdź moją odpowiedź [tutaj] (http://stackoverflow.com/questions/13269482/change-background-of-the-actionbarsherlock-alone-not-the-tabs/13283261#13283261) – PravinCG

+0

Dzięki Pravin. ActionBarStyleGenerator jest bardzo przydatny do stylu ActionBar – CocoNess

Odpowiedz

10

Rozwiązałem mój problem. Początkowo nie używałem List Lista Listwy. Użyłem obrazu tła bezpośrednio zamiast przechodzenia przez StateListDrawable. Za pomocą StateListDrawable można ustawić inne tło w zależności od tego, czy znacznik jest wybrany, czy nie.

Więc dodałem plik 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> 

i odwołuje to od mojego styles.xml:

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

Thank you Dude;) +1 –

+3

Co masz na myśli mówiąc o tym w pliku styles.xml? Jak się do tego powołałeś i w jaki sposób? Jak mogę to zrobić? Nie mogę zmusić go do działania. Nic na to nie działa, nigdy się nie zmienia bez względu na to, co robię. Android wydaje się naprawdę błędny. Z jakiego rodzica zrezygnowałeś? Jak to nazwałeś? Co odnosiłeś w manifeście? –

+1

Dobra odpowiedź :) użyj tak: ' ' – tenten

Powiązane problemy