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 相关文章推荐
SpringBoot项目中控制台日志的保存配置操作
Jun 18 Java/Android
Spring Boot两种全局配置和两种注解的操作方法
Jun 29 Java/Android
Java常用函数式接口总结
Jun 29 Java/Android
新手初学Java List 接口
Jul 07 Java/Android
spring cloud gateway中如何读取请求参数
Jul 15 Java/Android
mybatis中注解与xml配置的对应关系和对比分析
Aug 04 Java/Android
Java实现房屋出租系统详解
Oct 05 Java/Android
java多态注意项小结
Oct 16 Java/Android
Java 多线程协作作业之信号同步
May 11 Java/Android
JAVA springCloud项目搭建流程
May 11 Java/Android
SpringBoot项目部署到阿里云服务器的实现步骤
Jun 28 Java/Android
Java 中的 Lambda List 转 Map 的多种方法详解
Jul 07 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
Mysql的常用命令
2006/10/09 PHP
同时提取多条新闻中的文本一例
2006/10/09 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
2012/01/20 PHP
php下载文件源代码(强制任意文件格式下载)
2014/05/09 PHP
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
PHP fclose函数用法总结
2019/02/15 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
JCalendar 日历控件 v1.0 beta[兼容IE&amp;Firefox] 有文档和例子
2007/05/30 Javascript
jQuery入门知识简介
2010/03/04 Javascript
javascript对talbe进行动态添加、删除、验证实现代码
2012/03/29 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
详细分析JavaScript函数定义
2015/07/16 Javascript
有关jQuery中parent()和siblings()的小问题
2016/06/01 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
bootstrap table合并行数据并居中对齐效果
2018/10/17 Javascript
vue中改变滚动条样式的方法
2020/03/03 Javascript
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
python使用Pycharm创建一个Django项目
2018/03/05 Python
python 读取鼠标点击坐标的实例
2018/12/29 Python
关于Python 的简单栅格图像边界提取方法
2019/07/05 Python
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
西班牙灯具网上商店:Lampara.es
2018/06/05 全球购物
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
升职自荐书范文
2013/11/28 职场文书
服装设计行业个人的自我评价
2013/12/20 职场文书
中班上学期幼儿评语
2014/04/30 职场文书
会计求职信范文
2014/05/24 职场文书
烹饪大赛策划方案
2014/05/26 职场文书
社会学专业求职信
2014/07/17 职场文书
家长会欢迎词
2015/01/23 职场文书
立春观后感
2015/06/18 职场文书
使用pycharm运行flask应用程序的详细教程
2021/06/07 Python