我是Android的新手,我正在关注堆栈溢出的其他问题和答案,我觉得我越来越近,但我无法让它工作。 当我尝试它时崩溃我的应用程序。
只是为了测试它正在使用的功能
和
我的代码在drawable文件夹中有一个cb_selector。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="true"
android:drawable="@drawable/checkbox_checked"
android:color="#000000" />
<!-- checked -->
<item
android:state_checked="false"
android:drawable="@drawable/checkbox_empty"
android:color="#000000"/>
<!-- unchecked -->
<item
android:state_focused="true"
android:color="#000000"/>
<!-- on focus -->
<item android:color="#000000"/>
<!-- default -->
</selector>
我的复选框是:
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ownit_text"
android:id="@+id/switch_ownit"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_toEndOf="@id/imageView_amiibo"
android:layout_toRightOf="@+id/imageView_amiibo"
android:layout_below="@+id/textView_amiiboName"
android:background="@drawable/cb_selector"/>
在Android ADK网站上,它使用android:textColor=""
和android:background=""
进行堆栈溢出,有人曾说过使用android:button=""
当我使用背景或按钮时,它会崩溃。当我使用textcolor时它只会影响复选框标签,并且不会更改drawable。
答案 0 :(得分:1)
根据日志
引起:org.xmlpull.v1.XmlPullParserException:二进制XML文件行#15:标记需要一个&#39; drawable&#39;定义可绘制的属性或子标记
更改复选框
android:background="@drawable/cb_selector"/>
的
android:button="@drawable/cb_selector"/>
编辑:
你是对的,你正在使用图像,所以你必须改变它
android:button="@drawable/cb_selector"/>
小心img尺寸。
您还需要删除selector.xml中的颜色,并为每个状态使用drawable。像这样的东西
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="true"
android:drawable="@drawable/checkbox_checked"
/>
<!-- checked -->
<item
android:state_checked="false"
android:drawable="@drawable/checkbox_empty"
/>
<!-- unchecked -->
<item
android:state_focused="true"
android:drawable="@drawable/checkbox_empty"/>
<!-- on focus -->
<item android:drawable="@drawable/checkbox_empty"/>
<!-- default -->
</selector>