[英]setting color instead of drawable in selector causes crash
我想有一种根据视图状态更改颜色的背景色。
我很累像Google的示例一样创建它(除了我使用资源中的颜色而不是对十六进制值进行硬编码:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:color="@color/transparent" />
<item
android:color="@color/gray_3"
android:state_selected="true" />
</selector>
(位于res/color
)
然后将其设置为视图的背景。但是当我运行代码时,出现此错误导致崩溃:
Binary XML file line #3: <item> tag requires a 'drawable' attribute or child tag defining a drawable
它告诉我选择器中的“ item”标签需要drawable
,而不是color
才能定义颜色。
当我将其更改为可绘制对象时,例如:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable ="@color/transparent" />
<item
android:drawable ="@color/gray_3"
android:state_selected="true" />
</selector>
崩溃消失了,但是Android Studio给了我一个警告,说“颜色”是必需的
我唯一的怀疑是也许我不应该将视图背景设置为颜色选择器
尝试这个:
可绘制的xml代码:-
像这样使用透明色
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="@android:color/transparent"" />
<stroke
android:width="1dp"
android:color="@color/selected" />
<corners android:radius="4dp" />
</shape>
作为Google 在这里的文档,您不应在第一项中定义默认语句。
这是他们提供的示例。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="#ffff0000"/> <!-- pressed -->
<item android:state_focused="true"
android:color="#ff0000ff"/> <!-- focused -->
<item android:color="#ff000000"/> <!-- default -->
</selector>
尝试使用十六进制颜色代码代替颜色值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.