布局
<androidx.appcompat.widget.SwitchCompat android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@null" android:checked="false" android:thumb="@drawable/switch_button_thumb" app:track="@drawable/switch_button_track" />
thumb 和 track 需要自定义。
switch_button_thumb.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:bottom="2dp" android:left="2dp" android:right="2dp" android:top="2dp"> <shape android:shape="oval"> <solid android:color="#ffffff" /> <size android:width="18dp" android:height="18dp" /> </shape> </item> </layer-list>
使用layer-list,这样在item里面可以设置上下左右的间隙,如果不设置这个间距,就达不到效果。
switch_button_track.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true"> <shape> <corners android:radius="12dp" /> <solid android:color="#E61045" /> <size android:width="36dp" android:height="20dp" /> </shape> </item> <item android:state_checked="false"> <shape> <corners android:radius="12dp" /> <solid android:color="#eeeeee" /> <size android:width="36dp" android:height="20dp" /> </shape> </item> </selector>
设置选中和非选中两个状态的样式。