拆分或堆叠时Android更改操作栏选项卡的选择器颜色

时间:2012-10-28 12:00:36

标签: android android-actionbar

我设置了带标签导航的操作栏。在较小的屏幕上,标签位于操作栏下方,而较大的屏幕则标签位于操作栏内。我的操作栏显示为红色,标签显示为黑色。如果选项卡位于操作栏下方,我希望选择器显示为红色,然后如果选项卡位于操作栏内,则将颜色更改为黑色。

我的问题是我要么在操作栏的下方和内部都有一个红色选择器,要么在操作栏的下方和内部都有一个黑色选择器。当标签位于操作栏下方时,我希望选择器为红色,当它们位于内部时,我希望选择器为黑色。 这是我的styles_actionbar.xml:

<style name="Theme.customabthemegenerated" parent="@android:Theme.Holo.Light">
    <item name="android:actionBarItemBackground">@drawable/selectable_background_customabthemegenerated</item>
    <item name="android:actionBarStyle">@style/solid_ActionBar</item>
    <item name="android:actionBarTabStyle">@style/ActionBarTabStyle</item>        
    <item name="android:actionBarTabBarStyle">@style/ActionBarTabBarStyle</item>
    <item name="android:actionBarTabTextStyle">@style/ActionBarText</item>
</style>

<style name="solid_ActionBar" parent="@android:Widget.Holo.Light.ActionBar.Solid">
    <item name="android:background">@drawable/ab_solid_customabthemegenerated</item>
    <item name="android:backgroundStacked">@drawable/ab_stacked_solid_customabthemegenerated</item>
    <item name="android:backgroundSplit">@drawable/ab_bottom_solid_customabthemegenerated</item><!-- No difference without it -->
</style>

<style name="ActionBarTabStyle" parent="@android:style/Widget.Holo.ActionBar.TabView">
    <item name="android:background">@drawable/tab_indicator_inside</item>
</style>

<style name="ActionBarTabBarStyle" parent="@android:style/Widget.Holo.ActionBar.TabBar">
    <item name="android:background">@drawable/tab_indicator_outside</item>
</style>

<style name="ActionBarText" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/white</item>
</style>

我认为ActionBarTabBarStyle会在标签位于操作栏之外时对其设置样式,但它似乎没有任何效果。有什么方法可以在分割操作栏时获得红色选择器,在操作栏堆叠时有黑色选择器吗?

1 个答案:

答案 0 :(得分:3)

当屏幕宽度超过480dp时,我可以通过提供不同的风格来实现这一点。小于此的屏幕被视为窄,操作栏被分割(并且标签位于堆叠条中)。

要执行此操作,请创建资源文件res/values-w480dp/style.xml,并在操作栏中合并选项卡时定义其样式。 在常规res/values-w480dp/style.xml中,定义标签在堆叠操作栏中的样式。

这仅适用于SDK&gt; 13.

这不是一个非常干净的解决方案,但到目前为止一直有效。