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

Android 自定义Switch

一、效果图

二、代码实现

这里使用的是SwitchCompat

正常项目中是有该库,如果没有,可以选择版本添加依赖库:

implementation 'androidx.appcompat:appcompat:1.6.1'

XML布局:

    <LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:gravity="center_vertical"android:padding="16dp"><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="自定义开关"android:textSize="16sp" /><androidx.appcompat.widget.SwitchCompatandroid:id="@+id/switch_bluetooth"android:layout_width="wrap_content"android:layout_height="wrap_content"style="@style/CustomSwitch"/></LinearLayout>

自定义样式的 Switch

自定义stytle样式,在stytles.xml中添加

    <style name="CustomSwitch" parent="Widget.AppCompat.CompoundButton.Switch"><item name="android:thumb">@drawable/custom_thumb</item><item name="track">@drawable/custom_track</item><item name="android:minWidth">@dimen/dp_50</item><item name="android:minHeight">@dimen/dp_24</item></style>

 自定义 thumb 和 track

thumb(滑动按钮)和track(滑动轨道)
res/drawable/custom_thumb.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!--选中时按钮圆角和背景色  --><item android:state_checked="true"><shape android:shape="oval"><solid android:color="#FFFFFF" /><size android:width="@dimen/dp_26" android:height="@dimen/dp_24" /></shape></item><!--未选中时按钮圆角和背景色  --><item><shape android:shape="oval"><solid android:color="#FFFFFF" /><size android:width="@dimen/dp_26" android:height="@dimen/dp_24" /></shape></item>
</selector>

res/drawable/custom_track.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!--选中时轨道圆角和背景色  --><item android:state_checked="true"><shape android:shape="rectangle"><corners android:radius="@dimen/dp_16" /><solid android:color="?attr/buttonColorPrimary" /></shape></item><!--未选中时轨道圆角和背景色  --><item><shape android:shape="rectangle"><corners android:radius="@dimen/dp_16" />
<!--            <solid android:color="?attr/buttonColorSixth" />--><solid android:color="#CCCCCC" /></shape></item></selector>

在Activity中设置监听:

  mBinding.switchBluetooth.setOnCheckedChangeListener { buttonView, isChecked ->Log.d("BBBBB","isChecked:$isChecked")}

http://www.dtcms.com/a/544782.html

相关文章:

  • HBuilder 上架 iOS 应用全流程指南:从云打包到开心上架(Appuploader)上传的跨平台发布实践
  • PHP基础知识
  • Obsidian 入门教程
  • 响应式购物网站模板广州网站优化电话
  • 中山 网站建设 骏域做ag视频大全网站
  • Vue二进制数据渲染成图片
  • 未来智能网联汽车的网络安全档案建立方法
  • 防止表单重复提交功能简单实现
  • 网络安全等级保护测评高风险判定实施指引(试行)--2020与2025版对比
  • Squid 可观测性最佳实践
  • 【深度学习新浪潮】DeepSeek-OCR深度解析:视觉-文本压缩驱动的新一代OCR技术革命
  • 官方网站建设投标书网站建设包含哪些
  • 相应式手机网站建设网站建设专员一定要会网站建设吗
  • 手机云台ESD整改案例-阿赛姆电子
  • 拆解ASP.NET MVC 核心优势:松耦合、易测试、SEO 友好、RESTful 实战指南
  • 远期合约和期权合约的区别是什么?
  • 2025年国内数字化档案管理软件选型速览
  • 基于FPGA的雷达信号处理设计工具包分享
  • 基于MATLAB的多机器人编队控制系统设计与实现
  • 网站建设计划表模板西安的网站设计单位
  • linux Debian 12 安装 Docker(手动)
  • 天津网站建设培训wordpress网页如何公开
  • 从零到一:用仓颉语言打造你的第一个鸿蒙应用
  • VUE的“单向数据绑定” 和 “双向数据绑定”
  • Profile-Guided Optimization(PGO):Rust 性能优化的终极武器
  • 仓颉FFI实战:C/C++互操作与性能优化
  • FAQ09934:相机prevew时候出现水印问题
  • 基于XML方式的声明式事务管理 -》某配置文件解读
  • 神领物流v2.0-day01-环境搭建与登录笔记(个人记录、含练习答案、仅供参考)
  • 网页广告多少钱wordpress4.9.8优化