我希望 ActionBar 中的所有选项卡都有不同的颜色指示器,例如选项卡 1 为蓝色,选项卡 2 为红色等。
为了实现这一点,我确实为所有颜色创建了不同的选择器,并将它们放在可绘制的不同 xml 中。在 style.xml 我打电话给他们
<style name="MyTheme" parent="AppBaseTheme">
<item name="android:actionBarTabStyle">@style/ActionBarTabStyleRed</item>
</style>
<style name="ActionBarTabStyleRed">
<item name="android:background">@drawable/tab_indicator_red</item>
</style>
我也为不同的颜色创造了这种风格。现在,当我将可绘制对象或样式更改为不同的颜色时,它可以工作了。我可以看到颜色被应用于选项卡。但由于所有标签都是相同的颜色,它并没有解决我的目的。我试图设置标签的样式,onTabSelected()
但没有办法做到这一点。
最终我尝试为不同的颜色创建不同的主题并尝试以编程方式设置它们onTabSelected()
,但后来我知道必须先设置主题setContentView()
。
所以我的问题是..我该怎么做?有什么办法可以为不同的标签指示器设置不同的颜色???
更新:
-drawable/tab_indicator_red.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@android:color/transparent" />
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected_red" />
<!-- Focused states -->
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected_focused_red" />
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected_focused_red" />
<!-- Pressed -->
<!-- Non focused states -->
<item android:state_focused="false" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/tab_unselected_pressed_red" />
<item android:state_focused="false" android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/tab_selected_pressed_red" />
<!-- Focused states -->
<item android:state_focused="true" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/tab_unselected_pressed_red" />
<item android:state_focused="true" android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/tab_selected_pressed_red" />
</selector>