我用标签导航设置了操作栏。在较小的屏幕上,选项卡位于操作栏下方,而较大的屏幕上,选项卡位于操作栏内部。我的动作条是红色的,标签是黑色的。当制表符位于操作栏下方时,我希望将选择器设置为红色,如果制表符位于操作栏内部,则将颜色更改为黑色。
我的问题是要么在操作栏的下面和里面都有一个红色的选择器,要么在操作栏的下面和里面都有一个黑色的选择器。当标签在操作栏下面时,我希望选择器是红色的,当它们在里面时,我希望选择器是黑色的。
以下是我的Styles\u 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会在标签位于操作栏之外时设置标签样式,但似乎没有效果。当操作栏被拆分时,有没有办法得到一个红色的选择器,当操作栏被堆叠时,有没有办法得到一个黑色的选择器?
最佳答案
当屏幕宽度超过480dp时,我可以通过提供不同的样式来实现这一点。小于此值的屏幕被视为窄屏幕,操作栏被拆分(选项卡位于堆叠栏中)。
为此,请创建一个资源文件res/values-w480dp/style.xml
,并在选项卡合并到操作栏中时定义它们的样式。
在常规的res/values-w480dp/style.xml
中,定义标签位于堆叠动作栏中时的样式。
这只适用于sdk>13。
这不是一个非常干净的解决方案,但它的工作到目前为止。
关于android - 拆分或堆叠时,Android更改操作栏选项卡的选择器颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13108637/