Как стилизовать ActionBar, фон вкладки на выбранной вкладке

Я борюсь со стилем ActionBar. В моем приложении есть панель действий с тремя вкладками. Я пытаюсь заставить выбранную вкладку иметь цвет фона, а невыбранные вкладки отображать другой цвет. Я следую этой ссылке: Настройка панели действий. Но все вкладки показывают выбранный цвет.

Мой файл styles.xml выглядит следующим образом:

<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 — это всего лишь 9-й патч. Я также не уверен, наследую ли я вкладку панели действий от правильного родителя (parent="android:style/Widget.Holo.Light.ActionBar.TabBar). Я просмотрел ссылки и мне очень сложно понять иерархию стилей.

Почему мои вкладки не отображаются выбранными или нет? Заранее спасибо за вашу помощь.


person CocoNess    schedule 08.11.2012    source источник
comment
Используйте ActionBarSherlockStyleGenerator для его стилизации и использования. Проверьте мой ответ здесь   -  person PravinCG    schedule 08.11.2012
comment
Спасибо, Правин. ActionBarStyleGenerator очень полезен для стилизации ActionBar.   -  person CocoNess    schedule 08.11.2012


Ответы (1)


Я решил свою проблему. Изначально я не использовал State List Drawables. Я использовал фоновое изображение напрямую, а не через StateListDrawable. Используя StateListDrawable, вы можете установить другой фон в зависимости от того, выбран тег или нет.

Поэтому я добавил файл 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>

и я сослался на это из моего styles.xml:

 <item name="android:background">@drawable/tab_background_select</item>
person CocoNess    schedule 08.11.2012
comment
Что вы имеете в виду, вы ссылались на это из styles.xml? Как вы ссылались на это и каким образом? Как я могу это сделать? Я не могу заставить его работать. Ничто не работает для этого, это никогда не меняется, что бы я ни делал. Android кажется действительно глючным. На какого родителя вы ссылались? Как ты его назвал? На что вы ссылались в манифесте? - person ; 20.08.2014
comment
Хороший ответ :) используйте так, <style name="MyActionBarTabStyle" parent="@android:style/Widget.Holo.Light.ActionBar.TabBar"> <item name="android:background">@drawable/tab_background_select</item> </style> - person tenten; 30.05.2016