热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android自定义Switch开关按钮的样式实例详解

本文主要讲的是在Android原生Switch控件的基础上进行样式自定义,内容很简单,但是在实现的过程中还是遇到了一些问题,在此记录下来,需要的朋友参考下吧

封面

GitHub传送门

1.写在前面

本文主要讲的是在Android原生Switch控件的基础上进行样式自定义,内容很简单,但是在实现的过程中还是遇到了一些问题,在此记录下来,希望对大家能够有所帮助,看下效果图:

自定义样式

2.自定义样式

2.1 原生样式

首先看下原生的效果(Android 7.1):

原生效果

布局文件如下:

2.2 自定义样式

设计给的效果图大多数都不会使用原生效果,所以我们需要对样式进行自定义,比如下面这种效果:

自定义效果

定义Switch的开关按钮状态:

开启状态:switch_custom_thumb_on.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 
 

关闭状态:switch_custom_thumb_off.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 
 

定义一个selector:switch_custom_thumb_selector.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 
 

到此Switch的开关按钮状态就定义好了,接下来定义一下Switch滑动轨道的状态:

开启状态:switch_custom_track_on.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 
 
 

关闭状态:switch_custom_track_off.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 
 
 

定义一个selector:switch_custom_track_selector.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 
 

Switch自定义样式,默认情况下开关按钮和滑动轨道的高度是一样的,并且在xml文件中对轨道的宽高设置是无效的,如果想要修改轨道的高度可以这样做:

轨道高度低于开关按钮高度(效果中的第一个效果):轨道增加一个透明的边框

轨道高度高于开关按钮高度(效果中的第二个效果):开关按钮增加一个透明的边框

轨道的宽度会随着开关按钮的宽度自动变化,如果想要修改轨道的宽度,修改开关按钮的宽度就可以了。

设置自定义样式

thumb是开关按钮的属性,track是滑动轨道的属性,只需要把上面的两个selector文件设置进去就大功告成了。

3.更多属性

如果想要在开关按钮上显示文字怎么办,textOn和textOff属性可以分别设置开启和关闭的文字,别忘了将showText属性设置为true,这样才能显示出来:

显示文字还不够,还需要修改文字的颜色:

在res文件夹下建一个color文件夹,定义一个文本颜色状态的selector:switch_text_selector.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 
 

然后在style文件中定义一个样式:


最后在Switch中设置一下就可以了:

android:switchTextAppearance="@style/SwitchTheme"

4.写在最后

本文只讲了效果图中第一种样式的实现方法,更多样式可以在GitHub上进行下载查看,如有疑问,可以给我留言。

GitHub传送门

总结

以上所述是小编给大家介绍的Android 自定义Switch开关按钮的样式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


推荐阅读
  • 一、在androidStudio中实现tabs比较简单,新建项目就可以选择tabs模板进行创建,默认实现tabs功能:直接运行项目就可以看到效果:可以说非常简单,但是我们在实际开发 ... [详细]
  • apk简单介绍APK的组成apk安装流程app的启动过程apk打包流程AIDLAIDL介绍为什么要设计这门语言它有哪些语法?默认支持的数据类型包括什么是apk打包流程 ... [详细]
  • ARToolKitunity
    ARToolKit为开源的AR库,相对于高通和easyAr有几点特点:1)开源2)识别项目可以动态添加(详细在后)3)识别文件可以本地生成4)目前只能识别图片(目前为.jpg格式) ... [详细]
  • Adapter相当于C(Controller,控制器),listView相当于V(View,视图)用于显示数据为ListView提供数据的List,数组或数据库相当于MVC模式中的 ... [详细]
  • 利用ipv6技术,废旧笔记本变成server
    如果你家的路由器已经get到了ipv6地址,并且你家的电脑也获取了有效的ipv6地址,在广域网的设备可以访问到。那恭喜你,再配合我这个dd ... [详细]
  • 2019 年 Firebase 峰会上发布的新功能
    作者FrancisMa,HeadofProductFirebase的使命是帮助移动开发者和Web开发者迈向成功,但考虑到Firebase每个月有超过200万个活跃的应 ... [详细]
  • Android开发之Notification(实现消息弹窗、提示音以及点击事件)
    文章目录通知管理器通知渠道通知发送通知更多效果添加点击事件取消消息通知管理器通知管理器(NotificationManager)类是一个通知管理器&# ... [详细]
  • 一般的网页我的项目能够很容易的实现换肤性能,能够通过js扭转link元素中引入的css主题款式链接。然而微信小程序不能动静扭转wxss文件,所以须要其余的计划来实现。 ... [详细]
  • 先看看效果是不是自己想要的吧item及item内部控件点击事件不懂的可以先点击查看 ... [详细]
  • 成都万有算力(广州算力网络科技有限公司)
    在同期举办的第十三届天翼智能生态高峰论坛上,中国电信正式发布《中国电信AI+计划》。但从目前来看,后者的影响早已反过来远大于受置疑的前者。包括自由的金针菇、单纯的长颈鹿在内多位专家 ... [详细]
  • 十一、构建我们自己的包在本章中,我们将学习如何构建自己的包。编写包可以让我们创建可以在许多应用 ... [详细]
  • 问题说明最近看到Spring事务,在学习过程中遇到一个很苦恼问题搭建好Spring的启动环境后出现了一点小问题在启动时候却出现[java.lang.NullPointerExcep ... [详细]
  • CentOS7.2详细安装步骤(二)
    7)语言设置(可以在上一个主界面进行设置,这里不用再次设置)8)SECURITY设置(安全设置)选择default(默认的)策略就可以,通过进行选择,单击完成即可Default#默 ... [详细]
  • pdf怎么把html变成pdf1 用AdobeAcroat8.1.2,打开网页后,页面右键菜单中会出现一个“转换为AobePDF的选项,点击就可以转换。 安装AdobeAcroba ... [详细]
  • Linux文件目录和权限
    Linux文件目录和权限前言:Linux一般将文件可存取的身份分为三个类别,分别是ownergroupothers,根据权限划分,每个目录都可以拥有相对身份的-rwx[可读可写可执 ... [详细]
author-avatar
大傻vv_528
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有