SwitchCompat控件色值跟系统设置的主题有关,但是主题效果不是能轻易就能改的,因为涉及到整个APP的样式。网上方案基本都是通过修改style文件来改变色值,经过多次尝试修改最终觉得单独修改控件色值比较好。
一、控件属性
java
//修改开关色值就是最后两个属性决定的
<androidx.appcompat.widget.SwitchCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
app:thumbTint="@color/switch_thumb_bg"
app:trackTint="@color/switch_track_bg" />
- width和height使用wrap_content即可,因为即使设置了具体宽高也无效,需要特殊处理
- 点击该控件时会出现黑色阴影效果,设置background="@null"即可取消该效果
- thumbTint 开关的圆点色值
- trackTint 开关的轨道色值
二、在color文件夹下分别创建两个xml文件来设置圆点和轨道的色值
java
//switch_thumb_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/color_e7e7e7" android:state_checked="false"/>
<item android:color="@color/color_FF8525" android:state_checked="true"/>
</selector>
java
//switch_track_bg
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/color_afafaf" android:state_checked="false"/>
<item android:color="@color/color_66FF8525" android:state_checked="true"/>
</selector>
主要就是根据state_checked属性分别设置打开和关闭时对应的色值