平台
Android 9.0 + AndroidStudio
要求
在res/drawable/下, 通过编译XML实现CheckBox的图片效果, 如图:
未选中: 选中:
实现
未选中(ic_checkbox_off), 这个好实现, 通常写drawable都知道有那么几种形状
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<size android:width="18dp" android:height="18dp"/>
<corners android:radius="9dp"/>
<stroke android:color="#FFBC6500" android:width="1dp"/>
</shape>
</item>
</selector>
选中(layer_checkbox_on), 本文的重点
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:width="18dp" android:height="18dp">
<shape>
<corners android:radius="9dp"/>
<stroke android:color="#FFBC6500" android:width="1dp"/>
</shape>
</item>
<item android:gravity="center"
android:width="10dp" android:height="10dp">
<shape>
<corners android:radius="5dp"/>
<solid android:color="#FFBC6500" />
</shape>
</item>
</layer-list>
需要使用layer-list来实现.
最后, 再加个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/layer_checkbox_on"/>
<item android:drawable="@drawable/ic_checkbox_off"/>
</selector>