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

相关推荐
2601_9628857232 分钟前
如何用 Python 判断一只股票“追涨”还是“抄底”更有效?
android·开发语言·python
素师良码33 分钟前
第10篇:屏ESD Check内核逻辑驱动代码完整拆解
android
高晶38 分钟前
Android 短信收发模块从零到实战:权限配置、界面设计、发送接收与兼容性适配全攻略
android·程序员
随遇丿而安41 分钟前
第18周:ViewModel 基础功能 + 架构优化
android
问心无愧05134 小时前
[GXYCTF2019]Ping Ping Ping
android·笔记
事圆则缓4 小时前
Kotlin 异步与并发:从一次搜索请求走到状态流
android·开发语言·kotlin
帅得不敢出门5 小时前
Android Framework定制卸载确认窗口
android
Android-Flutter6 小时前
Compose 什么叫重组?怎么样触发重组?
android·compose
硫酸锌016 小时前
安卓手机连接Windows电脑后通过DHCP服务为手机分配IP地址
android·windows·计算机网络
骑着蜗牛撵大象3276 小时前
设备监控数据存与查:Spring Boot 接入 TimescaleDB 超表的完整落地
android·spring boot·后端·springboot·时序数据库·es·设备监控