Android - 选择器不适用于按钮中的文本

时间:2014-10-09 18:10:50

标签: android button textcolor

使用Android Studio。我试图使用选择器使按钮中的文本从白色变为深灰色。只有文字,而不是按钮的背景。

这是我的Selector xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/darker_gray" android:state_pressed="true"></item>
    <item android:drawable="@android:color/white" android:state_focused="true"></item>
    <item android:drawable="@android:color/white" android:state_enabled="true" android:state_focused="false" android:state_pressed="false"></item>
    <item android:drawable="@android:color/white" android:state_enabled="false"></item>
</selector>

这是我的Button xml:

<Button
    android:layout_width="match_parent"
    android:layout_height="45dp"
    android:text="Maps"
    android:id="@+id/buttonMaps"
    android:layout_above="@+id/buttonEmail"
    android:layout_marginBottom="5dp"
    android:layout_centerHorizontal="true"
    android:textColor="@drawable/selector"     <------- **SELECTOR NOT WORKING**
    android:background="#7f2f74a0"             <------- **but it does work if I stick it here**
    android:textSize="20sp" />

在预览面板中,我收到一条渲染错误消息,内容为&#34;无法为/ Users配置解析器... src / main / res / drawable / selector.xml&#34;

我已尝试过SO的一些解决方案,但没有任何工作,包括清理和重建项目。有趣的是,我很好奇并将选择器应用到按钮的背景并且它可以工作 - 按钮背景默认为白色并在按下时变为灰色。

比我更聪明的人有解决方案吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

将文本选择器放在资源文件夹下,而不是drawable。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@android:color/darker_gray" android:state_pressed="true"></item>
    <item android:color="@android:color/white" android:state_focused="true"></item>
    <item android:color="@android:color/white" android:state_enabled="true" android:state_focused="false" android:state_pressed="false"></item>
    <item android:color="@android:color/white" android:state_enabled="false"></item>
</selector>

使用它,

<Button
    android:layout_width="match_parent"
    android:layout_height="45dp"
    android:text="Maps"
    android:id="@+id/buttonMaps"
    android:layout_above="@+id/buttonEmail"
    android:layout_marginBottom="5dp"
    android:layout_centerHorizontal="true"
    android:textColor="@color/selector"  
    android:textSize="20sp" />