平台
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>
扩展
layer-list – layer-list的基本使用介绍