效果图:
原生样式和自己app的主题颜色不搭配,就可以这样自定义颜色样式。以下代码均可直接复制粘贴使用,且均有注释。
实现:
1、 新建drawable/switch_custom_thumb_on.xml(滑块开启状态 )
<?xml version="1.0" encoding="utf-8"?>
<!-- 滑块开启状态 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!-- 主色 -->
<solid android:color="#FFFFFF" />
<!-- 尺寸 -->
<size
android:width="20dp"
android:height="20dp" />
<!-- 边框 -->
<stroke android:width="1dp"
android:color="#CFD1CF"/>
</shape>
效果图如下:
2、 新建drawable/switch_custom_thumb_off.xml(滑块关闭状态 )
这里因为我的需求是开关,滑块状态都不变,所以直接复制上面的,你们可以更具自己的需求修改。
3、 新建drawable/switch_custom_thumb_selector.xml(滑块配置文件 ,用于根据开关状态选择对应的样式)
<?xml version="1.0" encoding="utf-8"?>
<!-- 滑块控制器 -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 通过 android:state_checked 判断 是否开关-->
<!-- 开启样式 -->
<item android:drawable="@drawable/switch_custom_thumb_on" android:state_checked="true" />
<!-- 关闭样式 -->
<item android:drawable="@drawable/switch_custom_thumb_off" android:state_checked="false" />
</selector>
4、 新建drawable/switch_custom_track_on.xml(轨道开启状态 )
<?xml version="1.0" encoding="utf-8"?>
<!-- 轨道开启状态 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 主色 -->
<solid android:color="#4BD764" />
<!-- 边框 -->
<stroke
android:width="5dp"
android:color="#00000000" />
<!-- 4个角的弧度 -->
<corners android:radius="20dp" />
</shape>
效果图如下:
5、新建drawable/switch_custom_track_off.xml(轨道关闭状态 )
<?xml version="1.0" encoding="utf-8"?>
<!-- 轨道关闭状态 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 主色 -->
<solid android:color="#E3E3E3" />
<!-- 边框 -->
<stroke
android:width="5dp"
android:color="#00000000" />
<!-- 4个角的弧度 -->
<corners android:radius="20dp" />
</shape>
效果图如下:
6、 新建drawable/switch_custom_track_selector.xml(轨道配置文件 ,用于根据开关状态选择对应的样式)
<?xml version="1.0" encoding="utf-8"?>
<!-- 轨道控制器 -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/switch_custom_track_on" android:state_checked="true" />
<item android:drawable="@drawable/switch_custom_track_off" android:state_checked="false" />
</selector>
7、最后在switch组件那里绑定这两个控制器即可
<Switch
android:id="@+id/isShowWssLog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:thumb="@drawable/switch_custom_thumb_selector"
android:track="@drawable/switch_custom_track_selector"/>