如何在选择器中设置按钮的文本样式?

jul*_*jul 24 android button

按钮选择器允许为按钮的每个状态定义背景,但是如何为每个状态定义按钮的文本样式?我的目标是在禁用时使按钮变灰.所以我为按钮的禁用状态设置了一个灰色的背景,但我发现灰色文本的唯一方法是在禁用按钮时动态更改它的颜色...

有人可以帮忙吗?

谢谢

<style name="srp_button" parent="@android:style/Widget.Button">
    <item name="android:background">@drawable/btn_default</item>
    <item name="android:textColor">#ffffff</item> <!-- How to specify different color for different state? -->
    <!-- more stuff -->
</style>
Run Code Online (Sandbox Code Playgroud)

绘制/ btn_default.xml

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

    <item android:state_enabled="true"><shape>
            <solid android:color="@color/pink" />
            <corners android:radius="6dp" />
        </shape></item>
    <item><shape>
            <solid android:color="#000000" />
            <corners android:radius="6dp" />
        </shape></item>

</selector>
Run Code Online (Sandbox Code Playgroud)

Adi*_*mro 43

好!

您可以为所有4状态定义文本颜色,与为您定义的背景类似Button.例如:

文件名: /res/color/text_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:color="#440000"/>
    <item android:state_focused="true" android:color="#004400"/>
    <item android:state_pressed="true" android:color="#000044"/>
    <item android:color="#444"/> 
</selector>
Run Code Online (Sandbox Code Playgroud)

将此文件放入您的ButtonStyle中,如下所示:

<style name="srp_button" parent="@android:style/Widget.Button">
    <item name="android:background">@drawable/btn_default</item>
    <item name="android:textColor">@color/text_color</item> <!-- Here is specified text color -->
</style>
Run Code Online (Sandbox Code Playgroud)