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

相关推荐
亓才孓1 分钟前
[JDBC]元数据
android
独行soc13 分钟前
2026年渗透测试面试题总结-17(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
金融RPA机器人丨实在智能21 分钟前
Android Studio开发App项目进入AI深水区:实在智能Agent引领无代码交互革命
android·人工智能·ai·android studio
科技块儿22 分钟前
利用IP查询在智慧城市交通信号系统中的应用探索
android·tcp/ip·智慧城市
独行soc1 小时前
2026年渗透测试面试题总结-18(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
王码码20351 小时前
Flutter for OpenHarmony 实战之基础组件:第二十七篇 BottomSheet — 动态底部弹窗与底部栏菜单
android·flutter·harmonyos
2501_915106321 小时前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview
vistaup2 小时前
OKHTTP 默认构建包含 android 4.4 的TLS 1.2 以及设备时间不对兼容
android·okhttp
常利兵2 小时前
ButterKnife在Android 35 + Gradle 8.+环境下的适配困境与现代化迁移指南
android
撩得Android一次心动2 小时前
Android LiveData 全面解析:使用Java构建响应式UI【源码篇】
android·java·android jetpack·livedata