Android标签文本颜色选择器忽略state_pressed

问题描述 投票:3回答:2

我创建了自己的android主题来更改操作栏选项卡的外观。问题是textcolor选择器似乎忽略state_pressed属性,因此即使按下此选项卡,选项卡文本的颜色也始终相同。其他状态没有问题,例如正确识别state_selected并且选中选项卡具有文本颜色,这与未选择的选项卡文本颜色不同。 更重要的是,我还为标签背景创建了选择器,它与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>

我已经尝试了一切但没有成功 - state_pressed属性似乎被忽略,但仅在textcolor_selector中。请帮助我理解并解决这个问题。

android android-styles textcolor
2个回答
1
投票

回顾一下ActionBar样式文档的Customize the Text Color部分 - 它提到Note: The custom style applied to titleTextStyle should use TextAppearance.Holo.Widget.ActionBar.Title as the parent style. - 也许是一个改变可能有助于纠正问题。

另一个值得关注的地方是here部分下的Example theme - 它显示了android:actionBarTabTextStyle的一个例子,可能有助于为你排序。


0
投票

在drawable文件夹中尝试这个:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_enabled="true">
        <shape>
            <corners android:radius="0dp" />
            <solid android:color="@color/white" />
            <stroke android:width="1dp" android:color="@color/color_700" />
            <padding android:bottom="1dp" android:left="1dp" android:right="1dp" android:top="1dp" />
        </shape>
    </item>
    <item android:state_enabled="false">
        <shape>
            <corners android:radius="0dp" />
            <solid android:color="@color/color_100" />
            <stroke android:width="1dp" android:color="@color/bloqueado" />
            <padding android:bottom="1dp" android:left="1dp" android:right="1dp" android:top="1dp" />
        </shape>
    </item>

</selector>
© www.soinside.com 2019 - 2024. All rights reserved.