Android开发手册自定义Switch开关按钮控件


Posted in Java/Android onJune 10, 2022

?自定义Switch外观

外观定制这块属于基操了,我们利用属性 android:track 和 android:thumb 定制 Switch 的背景图片和滑块图片,UI那能直接切图肯定做起来更快,此方式实现极其简单指定图片就行,所以今天我们实操的是自定义drawable的形式。

Android开发手册自定义Switch开关按钮控件

布局样式

<Switch
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:thumb="@drawable/selector_switch_thumb"
    android:layout_margin="16dp"
    android:track="@drawable/selector_switch_track" />

Drawable代码

<?xml version="1.0" encoding="utf-8"?><!--switch的自定义轨道-->
<!--selector_switch_track.xml文件-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/track_on" android:state_checked="true" />
    <item android:drawable="@drawable/track_off" android:state_checked="false" />
</selector>
<?xml version="1.0" encoding="utf-8"?><!--switch的自定义圆钮-->
<!--selector_switch_thumb.xml文件-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/thumb_on" android:state_checked="true" />
    <item android:drawable="@drawable/thumb_off" android:state_checked="false" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<!--track_on.xml文件-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#BB00FF00" />
    <!-- 这个是用来实现轨道高度小于圆钮高度的,值越大轨道越细-->
    <!-- 同理,若thumb有stroke,track没有,可实现圆钮在轨道里的伪效果-->
    <stroke
        android:width="8dp"
        android:color="#00000000" />
    <corners android:radius="20dp" />
</shape>
<?xml version="1.0" encoding="utf-8"?>
<!--track_off.xml文件-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#E4E4E4" />
    <!-- 这个是用来实现轨道高度小于圆钮高度的,值越大轨道越细-->
    <stroke
        android:width="8dp"
        android:color="#00000000" />
    <corners android:radius="20dp" />
</shape>
<?xml version="1.0" encoding="utf-8"?>
<!--thumb_on.xml文件-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#FFFF00" />
    <size
        android:width="20dp"
        android:height="20dp" />
</shape>
<?xml version="1.0" encoding="utf-8"?>
<!--thumb_off.xml文件-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#AAAAAA" />
    <size
        android:width="20dp"
        android:height="20dp" />
</shape>

要想实现下图效果:

Android开发手册自定义Switch开关按钮控件

就是小空在代码中注释所述,在开关按钮上增加一个透明的边框,轨道的高度会自动变化。

除了Switch还有另一个开关ToggleButton,该控件无thumb和track,相比Switch缺少了滑动的动画效果。在使用上和Switch基本一致,同样可以自定义。

Android开发手册自定义Switch开关按钮控件

以上就是Android开发手册自定义Switch开关按钮控件的详细内容,更多关于Android开发自定义Switch控件的资料请关注三水点靠木其它相关文章!


Tags in this post...

Java/Android 相关文章推荐
Java如何实现树的同构?
Jun 22 Java/Android
JavaWeb Servlet实现网页登录功能
Jul 04 Java/Android
Java后台生成图片的完整步骤
Aug 04 Java/Android
OpenCV实现反阈值二值化
Nov 17 Java/Android
Jpa Specification如何实现and和or同时使用查询
Nov 23 Java/Android
你知道Java Spring的两种事务吗
Mar 16 Java/Android
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
Mar 21 Java/Android
Java 数据结构七大排序使用分析
Apr 02 Java/Android
Java详细解析==和equals的区别
Apr 07 Java/Android
Android开发实现极为简单的QQ登录页面
Apr 24 Java/Android
springboot读取resources下文件的方式详解
Jun 21 Java/Android
IDEA中sout快捷键无效问题的解决方法
Jul 23 Java/Android
java实现面板之间切换功能
Jun 10 #Java/Android
Spring Boot项目如何优雅实现Excel导入与导出功能
Jun 10 #Java/Android
解决spring.thymeleaf.cache=false不起作用的问题
Jun 10 #Java/Android
Android开发手册Chip监听及ChipGroup监听
Jun 10 #Java/Android
Java实现带图形界面的聊天程序
Jun 10 #Java/Android
Android中View.post和Handler.post的关系
Android Canvas绘制文字横纵向对齐
Jun 05 #Java/Android
You might like
JAVA/JSP学习系列之四
2006/10/09 PHP
一个PHP操作Access类(PHP+ODBC+Access)
2007/01/02 PHP
php mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
2015/09/17 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
2016/05/25 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
在Vue methods中调用filters里的过滤器实例
2018/08/30 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS VG
2014/05/25 DOTA
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
2015/03/30 Python
深入理解python中的atexit模块
2017/03/07 Python
Python实现完整的事务操作示例
2017/06/20 Python
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
TensorFlow实现模型评估
2018/09/07 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
python爬虫增加访问量的方法
2019/08/22 Python
Python搭建代理IP池实现检测IP的方法
2019/10/27 Python
python基于property()函数定义属性
2020/01/22 Python
Python json格式化打印实现过程解析
2020/07/21 Python
Pycharm调试程序技巧小结
2020/08/08 Python
使用Python实现NBA球员数据查询小程序功能
2020/11/09 Python
python实现马丁策略的实例详解
2021/01/15 Python
Python 内存管理机制全面分析
2021/01/16 Python
财务会计人员求职的自我评价
2014/01/13 职场文书
答谢会策划方案
2014/05/12 职场文书
交通工程专业推荐信
2014/09/06 职场文书
小学科学教学计划
2015/01/21 职场文书
环保建议书范文
2015/09/14 职场文书
Flask使用SQLAlchemy实现持久化数据
2021/07/16 Python
MySQL Server 层四个日志
2022/03/31 MySQL