我试图用以下内容创建一个xml选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shuffleon" android:state_checked="true" />
<item android:drawable="@drawable/shuffleoff" android:state_selected="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)
当我尝试设置backgroundDrawable的checkBox复选框不更换CheckBox款式太:
shuffle.setBackground(android.support.v4.content.res.ResourcesCompat.getDrawable(getResources(), R.drawable.shuffle, null));
Run Code Online (Sandbox Code Playgroud)
关注这个问题:为Checkbox for Android更改已选中和未选中的图标我需要设置button drawable我的xml:android:button="@drawable/checkbox"但我不能这样做,因为我正在以CheckBox编程方式创建.有没有办法如何实现这一目标?
Sun*_*nil 14
在drawable文件夹中创建一个新布局并将其命名为custom_checkbox(您也可以重命名)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/Checked_image_name"android:state_checked="true"/>
<item android:drawable="@drawable/Unchecked_image_name" android:state_checked="false"/>
</selector>
Run Code Online (Sandbox Code Playgroud)在布局活动中使用它
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/custom_checkbox"/>
Run Code Online (Sandbox Code Playgroud)使用下面的代码行,我认为它会起作用
yourcheckbox.setButtonDrawable(yourdrawable);
Run Code Online (Sandbox Code Playgroud)
用这个
shuffle.setButtonDrawable(R.drawable.custom_checkbox_selector);
Run Code Online (Sandbox Code Playgroud)
XML 代码;
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/radiobutton_checked" android:state_checked="true"/>
<item android:drawable="@drawable/radiobutton_unchecked" android:state_checked="false"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
如果您使用 sdk 28 (androidx) 及以上版本尝试使用
androidx.appcompat.widget.AppCompatCheckBox
Run Code Online (Sandbox Code Playgroud)
代替
Checkbox
Run Code Online (Sandbox Code Playgroud)