【发布时间】:2011-04-05 07:13:06
【问题描述】:
当用户触摸它时,我正在尝试更改 Android TextView 小部件的背景颜色。我为此创建了一个选择器,它存储在res/color/selector.xml 中,大致如下所示:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:color="@color/semitransparent_white"
/>
<item
android:color="@color/transparent"
/>
</selector>
TextView 的 clickable 属性是 true,如果感兴趣的话。
当我将此选择器分配给 TextView 作为 android:background="@color/selector" 时,我在运行时遇到以下异常:
ERROR/AndroidRuntime(13130):原因:org.xmlpull.v1.XmlPullParserException:二进制 XML 文件第 6 行:标签需要 'drawable' 属性或定义可绘制对象的子标签
当我将属性更改为可绘制时,它可以工作,但结果看起来完全错误,因为 ID 似乎被解释为图像引用而不是颜色引用(正如“可绘制”所暗示的那样)。
让我感到困惑的是我可以设置颜色参考,例如“@color/black”,直接作为背景属性。这按预期工作。使用选择器不起作用。
我也可以毫无问题地将选择器用作textColor。
在 Android 中将背景颜色选择器应用于 TextView 的正确方法是什么?
【问题讨论】:
-
一种颜色可以被解释为一个drawable。结果到底错在哪里?
-
它不是显示颜色,而是显示我的可绘制资源中的图像作为背景。
-
如果您使用 android:drawable,而不是 android:color,以上内容应该可以工作 - 至少在这种情况下它适用于我:android:drawable="@color/my_custom_color"。我的颜色在 values/colors.xml 中定义
标签: android