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

相关推荐
ChinaDragonDreamer1 小时前
Kotlin:2.0.20 的新特性
android·开发语言·kotlin
网络研究院3 小时前
Android 安卓内存安全漏洞数量大幅下降的原因
android·安全·编程·安卓·内存·漏洞·技术
凉亭下4 小时前
android navigation 用法详细使用
android
小比卡丘6 小时前
C语言进阶版第17课—自定义类型:联合和枚举
android·java·c语言
前行的小黑炭7 小时前
一篇搞定Android 实现扫码支付:如何对接海外的第三方支付;项目中的真实经验分享;如何高效对接,高效开发
android
落落落sss8 小时前
MybatisPlus
android·java·开发语言·spring·tomcat·rabbitmq·mybatis
代码敲上天.9 小时前
数据库语句优化
android·数据库·adb
GEEKVIP11 小时前
手机使用技巧:8 个 Android 锁屏移除工具 [解锁 Android]
android·macos·ios·智能手机·电脑·手机·iphone
model200513 小时前
android + tflite 分类APP开发-2
android·分类·tflite
彭于晏68913 小时前
Android广播
android·java·开发语言