我想做一件简单的事:定义一个可绘制对象,它的背景颜色与系统状态按下的背景颜色完全相同。我在res/drawables/my_drawable.xml中这样做:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_selected="true">
<color android:color="?android:attr/colorPressedHighlight"/>
</item>
<item android:state_selected="false">
<color android:color="@color/section_list_background"/>
</item>
</selector>
我总是得到:
java.lang.UnsupportedOperationException: Cant convert to color: type=0x2
有线索吗?
问候
4条答案
按热度按时间wvt8vs2t1#
您可能需要执行以下操作来解决问题:
1)在颜色文件中为每个主题定义2种颜色:
2)创建包含以下内容的文件res/values/attrs.xml:
3)假设styles.xml中有2个主题(
Theme.dark
和Theme.light
),请定义:4)在可绘制对象中使用颜色:
希望这能解决你的问题。
fwzugrvs2#
你不能在xml可绘制资源中使用
?attr
,因为可绘制资源由aapt在编译时创建。Attr资源用于运行时的动态连接ha5z0ras3#
您正在尝试将属性转换为颜色。属性是通常附加到视图的属性,然后可以使用主题设置其样式。
您需要在xml中引用一个颜色资源。您可以通过创建自己的资源来实现这一点:
然后像这样引用它:
或者,您可以参考Android资源中提供的颜色:
zbsbpyhn4#
尝试这种方式把颜色在android:drawable如下
或