安卓修改SwitchCompat色值

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属性分别设置打开和关闭时对应的色值

相关推荐
黄林晴3 小时前
如何判断手机是否是纯血鸿蒙系统
android
火柴就是我3 小时前
flutter 之真手势冲突处理
android·flutter
法的空间3 小时前
Flutter JsonToDart 支持 JsonSchema
android·flutter·ios
循环不息优化不止3 小时前
深入解析安卓 Handle 机制
android
恋猫de小郭4 小时前
Android 将强制应用使用主题图标,你怎么看?
android·前端·flutter
jctech4 小时前
这才是2025年的插件化!ComboLite 2.0:为Compose开发者带来极致“爽”感
android·开源
用户2018792831674 小时前
为何Handler的postDelayed不适合精准定时任务?
android
叽哥4 小时前
Kotlin学习第 8 课:Kotlin 进阶特性:简化代码与提升效率
android·java·kotlin
Cui晨4 小时前
Android RecyclerView展示List<View> Adapter的数据源使用View
android
氦客4 小时前
Android Doze低电耗休眠模式 与 WorkManager
android·suspend·休眠模式·workmanager·doze·低功耗模式·state_doze