当前位置: 首页 > news >正文

Android 滑动按钮(开关) SwitchCompat 自定义风格

原生的SwitchCompat控件如下图,不说不堪入目,也算是不敢恭维了。开个玩笑...

所以我们就需要对SwitchCompat进行自定义风格,效果如下图

代码如下

    <androidx.appcompat.widget.SwitchCompatandroid:id="@+id/switch_compat"android:layout_width="wrap_content"android:layout_height="wrap_content"android:thumb="@drawable/switch_thumb"app:switchMinWidth="60dp"app:track="@drawable/switch_track_style" />

从上面的xml代码来看其实只需要定制两个东西一个是thumb,另一个是track

switch_thumb

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="oval"><solid android:color="@color/white" /><sizeandroid:width="50dp"android:height="50dp" /><!-- 这里的5dp边距的作用是,圆点在轨道里面的边距,这样的效果感觉更好 --><strokeandroid:width="5dp"android:color="#00000000" /><corners android:radius="15dp" />
</shape>

switch_track_style

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/switch_common_track_selected" android:state_checked="true" /><item android:drawable="@drawable/switch_common_track_unselected" android:state_checked="false" />
</selector>

switch_track_style里面有两个背景如下

switch_common_track_selected

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item ><shape android:shape="rectangle"><solid android:color="#23c3ff" /><size android:height="30dp" /><strokeandroid:color="#00000000" /><corners android:radius="30dp" /></shape></item>
</layer-list>

switch_common_track_unselected

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item><shape android:shape="rectangle"><solid android:color="#4D8E8E8E" /><size android:height="30dp" /><strokeandroid:color="#00000000" /><corners android:radius="30dp" /></shape></item>
</layer-list>

完活了!!!

http://www.lryc.cn/news/250374.html

相关文章:

  • 前端面试灵魂提问-计网(2)
  • Git修改远程仓库名称
  • kafka 集群 ZooKeeper 模式搭建
  • 【LeetCode】 160. 相交链表
  • TZOJ 1429 小明A+B
  • 制作openeuler的livecd
  • B.牛牛排队伍——模拟双链表
  • 【PyTorch】(四)损失函数与优化器
  • 【Python】使用execute(sql)执行insert之后没有插入数据
  • 虚拟机备份数据自动化验证原理
  • 前端入门(五)Vue3组合式API特性
  • Doris 数据导入二:Stream Load 方式
  • 【算法刷题】Day10
  • SAP 如何检查已安装的SAP UI5 版本
  • 15、 深度学习之正向传播和反向传播
  • 微信小程序中复制文本
  • vue3学习--初始
  • cmake和vscode 下的cmake的使用详解(二)
  • 集成开发环境 PyCharm 的安装【侯小啾python领航班系列(二)】
  • mysql从库设置为只读
  • .NET6实现破解Modbus poll点表配置文件
  • 【零基础入门Docker】Dockerfile中的USER指令以及dockerfile命令详解
  • R语言期末考试复习二
  • golang Pool实战与底层实现
  • WPF使用Prism框架批量注册Page,Window,UserControl等视图组件
  • 网络安全应急响应-Server2228(环境+解析)
  • [WP] ISCTF2023 Web 部分题解
  • uniapp之Vue3配置跨域(代理)
  • 单片机实验(三)
  • Python 2进制按位取反