安卓:自定义文本选择器

9
我希望设计一个自定义文本选择器,当用户点击TextView时可以改变文本颜色。但是出现了以下错误:
java.lang.RuntimeException:无法启动活动ComponentInfo{}:android.view.InflateException:二进制XML文件第55行:错误膨胀类
这是我的代码: drawable/text_selector.xml
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
  <item android:state_enabled="false" 
        android:state_focused="true" 
        android:drawable="@color/black" /> 
  <item android:state_pressed="true" 
        android:drawable="@color/blue" /> 
  <item android:state_focused="true" 
        android:drawable="@color/black" /> 
</selector> 

layout/textview.xml

<TextView android:id = "@+id/last_page_button"
    android:text="@string/last_page_button_string" 
    android:gravity="center_horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:background="#ffffff"
    android:textColor = "@drawable/text_selector"
    android:layout_weight="1" />

values/color.xml

<resources> 
    <color name="white">#ffffffff</color> 
    <color name="black">#ff000000</color> 
    <color name="blue">#ffccddff</color>

2个回答

24

你不能将drawable分配给textColor。它必须是一种颜色。

<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_selected="true"

        android:color="@color/color1" />
    <item
        android:color="@color/color2" />
</selector>

在你的res文件夹中创建一个color文件夹,将该文件保存为mycolor.xml,并将其分配给textColor作为@color/mycolor


1
它必须是彩色的。为什么要将其放在值中?同时确保您的视图从父级获取状态。 - Alex Volovoy
@AlexVolovoy 你好,当我尝试应用时,当用户触摸TextView时,我在代码中使用了以上所有内容,但没有任何效果。我在Android 2.1更新-1中进行了检查。 - Herry
1
好的,我认为在TextView中我们不能直接将textColor设置为@color/mycolor来改变TextView的文本颜色,所以我们可以在Button View中使用这个东西,或者像这个例子中的某些方式。[http://developer.android.com/resources/samples/Home/res/color/bright_text_dark_focused.html] - Herry
选择器必须指定所有三个状态,而不仅仅是 android:state_selected 才能工作。正如 @Herry 所指定的,这是从 Android SDK 示例中获取的: - AlexAndro
遇到相同的问题。不要忘记在你的TextView下面加上"android:clickable="true""。 - skyfishjy
显示剩余2条评论

0
使用选择器如下所示:
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_selected="true"

    android:color="@color/c1" />
<item
    android:color="@color/c2" />


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接