android 自定义开关键设置大小,Android 自定义Switch开关按钮的样式实例详解
封面
GitHub传送门
1.写在前面
本文主要讲的是在Android原生Switch控件的基础上进行样式自定义,内容很简单,但是在实现的过程中还是遇到了一些问题,在此记录下来,希望对大家能够有所帮助,看下效果图:
自定义样式
2.自定义样式
2.1 原生样式
首先看下原生的效果(Android 7.1):
原生效果
布局文件如下:
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
2.2 自定义样式
设计给的效果图大多数都不会使用原生效果,所以我们需要对样式进行自定义,比如下面这种效果:
自定义效果
定义Switch的开关按钮状态:
开启状态:switch_custom_thumb_on.xml
android:shape="oval">
android:width="20dp"
android:height="20dp" />
关闭状态:switch_custom_thumb_off.xml
android:shape="oval">
android:width="20dp"
android:height="20dp" />
定义一个selector:switch_custom_thumb_selector.xml
到此Switch的开关按钮状态就定义好了,接下来定义一下Switch滑动轨道的状态:
开启状态:switch_custom_track_on.xml
android:shape="rectangle">
android:width="5dp"
android:color="#00000000" />
关闭状态:switch_custom_track_off.xml
android:shape="rectangle">
android:width="5dp"
android:color="#00000000" />
定义一个selector:switch_custom_track_selector.xml
Switch自定义样式,默认情况下开关按钮和滑动轨道的高度是一样的,并且在xml文件中对轨道的宽高设置是无效的,如果想要修改轨道的高度可以这样做:
轨道高度低于开关按钮高度(效果中的第一个效果):轨道增加一个透明的边框
轨道高度高于开关按钮高度(效果中的第二个效果):开关按钮增加一个透明的边框
轨道的宽度会随着开关按钮的宽度自动变化,如果想要修改轨道的宽度,修改开关按钮的宽度就可以了。
设置自定义样式
thumb是开关按钮的属性,track是滑动轨道的属性,只需要把上面的两个selector文件设置进去就大功告成了。
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:thumb="@drawable/switch_custom_thumb_selector"
android:track="@drawable/switch_custom_track_selector" />
3.更多属性
如果想要在开关按钮上显示文字怎么办,textOn和textOff属性可以分别设置开启和关闭的文字,别忘了将showText属性设置为true,这样才能显示出来:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:showText="true"
android:switchTextAppearance="@style/SwitchTheme"
android:textOff="OFF"
android:textOn="ON"
android:thumb="@drawable/switch_rectangle_thumb_selector"
android:track="@drawable/switch_rectangle_track" />
显示文字还不够,还需要修改文字的颜色:
在res文件夹下建一个color文件夹,定义一个文本颜色状态的selector:switch_text_selector.xml
然后在style文件中定义一个样式:
@color/switch_text_selector
最后在Switch中设置一下就可以了:
android:switchTextAppearance="@style/SwitchTheme"
4.写在最后
本文只讲了效果图中第一种样式的实现方法,更多样式可以在GitHub上进行下载查看,如有疑问,可以给我留言。
GitHub传送门
总结
以上所述是小编给大家介绍的Android 自定义Switch开关按钮的样式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
android 自定义开关键设置大小,Android 自定义Switch开关按钮的样式实例详解相关推荐
- android系统息屏设置_Android亮屏和熄屏控制实例详解
本文实例讲述了Android亮屏和熄屏控制实现方法.分享给大家供大家参考,具体如下: 一.概述 我们的Android应用程序很多需要和亮屏和熄屏打交道,比如闹钟的时候,需要保持亮屏,之后又需要熄屏.那 ...
- android如何定时息屏_Android亮屏和熄屏控制实例详解
本文实例讲述了Android亮屏和熄屏控制实现方法.分享给大家供大家参考,具体如下: 一.概述 我们的Android应用程序很多需要和亮屏和熄屏打交道,比如闹钟的时候,需要保持亮屏,之后又需要熄屏.那 ...
- php 设置post大小_php 修改上传文件大小限制实例详解
1. 修改 max_execution_time 在php中,默认的页面最久执行时间为 30 秒,超过30秒,该脚本就停止执行. 这样就会出现无法打开网页的情况.这时我们可以修改 max_execut ...
- android抽奖动画,Android App中实现简单的刮刮卡抽奖效果的实例详解
主要思想: 将一个view设计成多层:背景层,含中奖信息等: 遮盖层,用于刮奖,使用关联一个Bitmap的Canvas 在该Bitmap上,使用它的canvas.drawPath的api来处理 手势滑 ...
- android自定义圆角进度条,Android自定义进度条的圆角横向进度条实例详解
1.本文将向你介绍自定义进度条的写法,比较简单,但还是有些知识点是需要注意的: invalidate()方法 RectF方法的应用 onMeasure方法的应用 2.原理 画3层圆角矩形,底层为黑色, ...
- android 刷新标题栏,Android 自定义标题栏的实例详解
Android 自定义标题栏的实例详解 开发 Android APP 经常会用到自定义标题栏,而有多级页面的情况下还需要给自定义标题栏传递数据. 本文要点: 自定义标题填充不完整 自定义标题栏返回按钮 ...
- android自定义view案例,Android自定义View的实现方法实例详解
一.自绘控件 下面我们准备来自定义一个计数器View,这个View可以响应用户的点击事件,并自动记录一共点击了多少次.新建一个CounterView继承自View,代码如下所示: 可以看到,首先我们在 ...
- android 自定义xmlns,Android xmlns 的作用及其自定义实例详解
Android xmlns 的作用及其自定义实例详解 xmlns:Android="http://schemas.android.com/apk/res/android的作用是: 这个是xm ...
- android ratingbar 高度,Android RatingBar终极解决方案,大小、颜色、间距、样式随便定义...
用过RatingBar的都知道,这玩意比较坑,不好调整大小.间距.颜色及样式等难以自定义.这里给出一个RatingBar的终极解决方案-AndRatingBar. AndRatingBar开源库,它继 ...
- android相册和拍照并裁剪图片大小,Android 拍照并对照片进行裁剪和压缩实例详解...
Android 拍照并对照片进行裁剪和压缩实例详解 本文主要介绍 Android 调用摄像头拍照并对照片进行裁剪和压缩,文中给出了主要步骤和关键代码. 调用摄像头拍照,对拍摄照片进行裁剪,代码如下. ...
最新文章
- sys.argv[n] (终端运行python文件第n个参数) 在 pycharm 中的应用
- PKUWC2019游记
- 中国移动系统集成公司2020春招技术综合在线编程题第一题
- MySQL与oracle报错显示_Oracle中判断表是否存在再删除表避免报错与MySql和SqlServer的不同...
- mysql 批量更新语句
- Omi框架学习之旅 - 通过对象实例来实现组件通讯 及原理说明
- 我所理解的IRepository
- 《SpringBoot揭秘 快速构建微服务体系》读后感(三)
- 论游戏项目中的左与右
- python第十六课——外部函数and内部函数
- PX4避障和轨迹规划(3DVFH*)
- [剑指Offer] 36.两个链表的第一个公共结点
- Microsoft SQL Server 2005简体中文开发版下载说明
- KVM虚拟化技术(一)之环境部署
- 中文编程语言实现:翻译器
- MATLAB高维矩阵的求和、索引
- 使用Mac下的sequel Pro数据库错误MySQL said: Authentication plugin 'caching_sha2_password'
- (半)自动批量添加QQ好友
- win7计算机高级还原,主编教您win7怎么一键还原
- 第六章:Reminders实验:第二部分[Learn Android Studio 汉化教程]
热门文章
- 超全面Figma,Pixso和Sketch工具盘点
- 浅析图片懒加载(三种实现方法与两种优化方式)
- android图片自动翻转,android图片翻转镜像
- Swift中数组字典和plist文件的转换
- 板邓:wordpress自定义用户角色和权限全面解析
- 诗词大全给力版_小学生诗词必背75+80首,课内课外全掌握,还送配套练习册amp;视频课...
- 深度好文| Redis面试全攻略
- sql 查看某个日期字段对应某天的数据
- .net c#通过Exif获取图片信息(参数)
- pscc2021绿色免安装完整版