封面

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开关按钮的样式实例详解相关推荐

  1. android系统息屏设置_Android亮屏和熄屏控制实例详解

    本文实例讲述了Android亮屏和熄屏控制实现方法.分享给大家供大家参考,具体如下: 一.概述 我们的Android应用程序很多需要和亮屏和熄屏打交道,比如闹钟的时候,需要保持亮屏,之后又需要熄屏.那 ...

  2. android如何定时息屏_Android亮屏和熄屏控制实例详解

    本文实例讲述了Android亮屏和熄屏控制实现方法.分享给大家供大家参考,具体如下: 一.概述 我们的Android应用程序很多需要和亮屏和熄屏打交道,比如闹钟的时候,需要保持亮屏,之后又需要熄屏.那 ...

  3. php 设置post大小_php 修改上传文件大小限制实例详解

    1. 修改 max_execution_time 在php中,默认的页面最久执行时间为 30 秒,超过30秒,该脚本就停止执行. 这样就会出现无法打开网页的情况.这时我们可以修改 max_execut ...

  4. android抽奖动画,Android App中实现简单的刮刮卡抽奖效果的实例详解

    主要思想: 将一个view设计成多层:背景层,含中奖信息等: 遮盖层,用于刮奖,使用关联一个Bitmap的Canvas 在该Bitmap上,使用它的canvas.drawPath的api来处理 手势滑 ...

  5. android自定义圆角进度条,Android自定义进度条的圆角横向进度条实例详解

    1.本文将向你介绍自定义进度条的写法,比较简单,但还是有些知识点是需要注意的: invalidate()方法 RectF方法的应用 onMeasure方法的应用 2.原理 画3层圆角矩形,底层为黑色, ...

  6. android 刷新标题栏,Android 自定义标题栏的实例详解

    Android 自定义标题栏的实例详解 开发 Android APP 经常会用到自定义标题栏,而有多级页面的情况下还需要给自定义标题栏传递数据. 本文要点: 自定义标题填充不完整 自定义标题栏返回按钮 ...

  7. android自定义view案例,Android自定义View的实现方法实例详解

    一.自绘控件 下面我们准备来自定义一个计数器View,这个View可以响应用户的点击事件,并自动记录一共点击了多少次.新建一个CounterView继承自View,代码如下所示: 可以看到,首先我们在 ...

  8. android 自定义xmlns,Android xmlns 的作用及其自定义实例详解

    Android xmlns 的作用及其自定义实例详解 xmlns:Android="http://schemas.android.com/apk/res/android的作用是: 这个是xm ...

  9. android ratingbar 高度,Android RatingBar终极解决方案,大小、颜色、间距、样式随便定义...

    用过RatingBar的都知道,这玩意比较坑,不好调整大小.间距.颜色及样式等难以自定义.这里给出一个RatingBar的终极解决方案-AndRatingBar. AndRatingBar开源库,它继 ...

  10. android相册和拍照并裁剪图片大小,Android 拍照并对照片进行裁剪和压缩实例详解...

    Android 拍照并对照片进行裁剪和压缩实例详解 本文主要介绍 Android 调用摄像头拍照并对照片进行裁剪和压缩,文中给出了主要步骤和关键代码. 调用摄像头拍照,对拍摄照片进行裁剪,代码如下. ...

最新文章

  1. sys.argv[n] (终端运行python文件第n个参数) 在 pycharm 中的应用
  2. PKUWC2019游记
  3. 中国移动系统集成公司2020春招技术综合在线编程题第一题
  4. MySQL与oracle报错显示_Oracle中判断表是否存在再删除表避免报错与MySql和SqlServer的不同...
  5. mysql 批量更新语句
  6. Omi框架学习之旅 - 通过对象实例来实现组件通讯 及原理说明
  7. 我所理解的IRepository
  8. 《SpringBoot揭秘 快速构建微服务体系》读后感(三)
  9. 论游戏项目中的左与右
  10. python第十六课——外部函数and内部函数
  11. PX4避障和轨迹规划(3DVFH*)
  12. [剑指Offer] 36.两个链表的第一个公共结点
  13. Microsoft SQL Server 2005简体中文开发版下载说明
  14. KVM虚拟化技术(一)之环境部署
  15. 中文编程语言实现:翻译器
  16. MATLAB高维矩阵的求和、索引
  17. 使用Mac下的sequel Pro数据库错误MySQL said: Authentication plugin 'caching_sha2_password'
  18. (半)自动批量添加QQ好友
  19. win7计算机高级还原,主编教您win7怎么一键还原
  20. 第六章:Reminders实验:第二部分[Learn Android Studio 汉化教程]

热门文章

  1. 超全面Figma,Pixso和Sketch工具盘点
  2. 浅析图片懒加载(三种实现方法与两种优化方式)
  3. android图片自动翻转,android图片翻转镜像
  4. Swift中数组字典和plist文件的转换
  5. 板邓:wordpress自定义用户角色和权限全面解析
  6. 诗词大全给力版_小学生诗词必背75+80首,课内课外全掌握,还送配套练习册amp;视频课...
  7. 深度好文| Redis面试全攻略
  8. sql 查看某个日期字段对应某天的数据
  9. .net c#通过Exif获取图片信息(参数)
  10. pscc2021绿色免安装完整版