如何设置ActionBar样式,选中选项卡上的选项卡背景

时间:2012-11-08 08:49:25

标签: android android-actionbar android-tabs android-styles

我正在努力设计ActionBar。我的应用程序有一个带有三个选项卡的ActionBar。我试图让选定的标签具有背景颜色,而未选择的标签显示不同的颜色。我正在关注此引用:Customizing Action Bar。但是所有TAB都显示了选定的颜色。

我的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)继承了操作栏选项卡。我查看了参考文献&amp;发现很难理解风格层次

为什么我的标签不会被选中或不被选中?在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:11)

我解决了我的问题。我最初没有使用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>