我已经创建了自己的Android主题,以改变操作栏标签的外观。问题在于textcolor选择器似乎忽略state_pressed属性,因此选项卡文本的颜色始终相同,即使按下该选项卡也是如此。其他状态没有问题,例如state_selected被正确识别,并且所选选项卡具有与未选中选项卡文本颜色不同的文本颜色。
此外,我还为选项卡背景创建了选择器,并且在state_pressed的情况下正常工作(如果选项卡被按下,则其背景颜色会更改)。
以下是我的一些代码片段:
styles.xml:
我尝试了很多方法都没有成功 - 在 textcolor_selector 中,state_pressed 属性似乎被忽略了。请帮我理解并解决这个问题。
此外,我还为选项卡背景创建了选择器,并且在state_pressed的情况下正常工作(如果选项卡被按下,则其背景颜色会更改)。
以下是我的一些代码片段:
styles.xml:
<style name="Theme.MyTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:actionBarTabStyle">@style/Theme.MyTheme.TabStyle</item>
<item name="android:actionBarTabTextStyle">@style/Theme.MyTheme.TabTextStyle</item>
</style>
...
<style name="Theme.MyTheme.TabStyle"
parent="@android:style/Widget.Holo.Light.ActionBar.TabView">
<item name="android:background">@drawable/background_selector</item>
</style>
<style name="Theme.MyTheme.TabTextStyle"
parent="@android:style/Widget.Holo.Light.ActionBar.TabText">
<item name="android:textColor">@color/textcolor_selector</item>
</style>
background_selector.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:state_pressed="false">
<shape>
<solid android:color="#00ff00"/>
</shape>
</item>
<item android:state_selected="false" android:state_pressed="true">
<shape>
<solid android:color="#0000ff"/>
</shape>
</item>
<item android:state_selected="true" android:state_pressed="false">
<shape>
<solid android:color="#ff0000"/>
</shape>
</item>
<item android:state_selected="true" android:state_pressed="true">
<shape>
<solid android:color="#ffff00"/>
</shape>
</item>
</selector>
textcolor_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:state_pressed="false"
android:color="#ff0000"/>
<item android:state_selected="true" android:state_pressed="true"
android:color="#0000ff"/>
<item android:state_selected="false" android:state_pressed="false"
android:color="#ffff00"/>
<item android:state_selected="false" android:state_pressed="true"
android:color="#00ff00"/>
</selector>
我尝试了很多方法都没有成功 - 在 textcolor_selector 中,state_pressed 属性似乎被忽略了。请帮我理解并解决这个问题。
textcolor_selector
文件在res/color/
目录下吗?如你所述<item name="android:textColor">@color/textcolor_selector</item>
。 - Bretstate_pressed
都是首选且在这里也被列为第一选项 --- 尝试更改textcolor_selector
文件中的states
顺序,将每个<item>
的state_pressed
放在state_selected
之前 - Bret<selector xmlns:android="schemas.android.com/apk/res/android">; <item android:state_pressed="true" android:color="#ff0000" /> <item android:state_pressed="false" android:color="#0000ff"/> </selector>
- whatever