2014-10-09 88 views
1
中的文本

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

这是我选择的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> 

这里是我的按钮的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" /> 

在预览面板中,我收到读取渲染错误消息“无法配置解析器for /Users...src/main/res/drawable/selector.xml“

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

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

谢谢!

回答

4

将文本选择器置于资源下而不是可绘制的资源文件夹下。

<?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" /> 
+0

感谢响应。我试过这个,但它仍然不起作用。不过要清楚的是,我在“res”目录中创建了一个名为“color”的新文件夹。然后我将选择器移动到新创建的“颜色”文件夹中。我接收到相同的错误响应。 – 2014-10-09 19:24:43

+0

更新了答案并立即开始工作。只需复制选择器并将其替换为我的 – 2014-10-09 19:34:15

+0

就行了!非常感谢你的帮助。我被这个难倒了好几个小时。 – 2014-10-09 20:08:03

相关问题