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

9
回复
1486
查看
打印 上一主题 下一主题
[复制链接]

329

主题

994

帖子

714

安币

手工艺人

楼主
发表于 2018-3-12 12:13:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

            

        

        封面

        github传送门

        1.写在前面

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

        

        自定义样式

        2.自定义样式

        2.1 原生样式

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

        

        原生效果

        布局文件如下:

[Java] 查看源文件 复制代码
<switch
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />

        2.2 自定义样式

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

        

        自定义效果

        定义switch的开关按钮状态:

        开启状态:switch_custom_thumb_on.xml

[Java] 查看源文件 复制代码
<

        关闭状态:switch_custom_thumb_off.xml

[Java] 查看源文件 复制代码
<

        定义一个selector:switch_custom_thumb_selector.xml

[Java] 查看源文件 复制代码
<

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

        开启状态:switch_custom_track_on.xml

[Java] 查看源文件 复制代码
<

        关闭状态:switch_custom_track_off.xml

[Java] 查看源文件 复制代码
<

        定义一个selector:switch_custom_track_selector.xml

[Java] 查看源文件 复制代码
<

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

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

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

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

        设置自定义样式

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

[Java] 查看源文件 复制代码
<switch
 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,这样才能显示出来:

[Java] 查看源文件 复制代码
<switch
 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

[Java] 查看源文件 复制代码
<

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

[Java] 查看源文件 复制代码
<style name="switchtheme" parent="@android:style/textappearance.small">
 <item name="android:textcolor">@color/switch_text_selector</item>
</style>

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

[Java] 查看源文件 复制代码
android:switchtextappearance="@style/switchtheme"

        4.写在最后

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

        github传送门

        总结



        
分享到:  QQ好友和群 QQ空间 微信
收藏
收藏0
支持
支持0
反对
反对0

449

主题

1210

帖子

1949

安币

手工艺人

沙发
发表于 2018-3-12 19:14:16 | 只看该作者
帮帮顶顶!!

314

主题

1061

帖子

683

安币

手工艺人

板凳
发表于 2018-3-13 03:34:39 | 只看该作者
每次我都积极回帖的,想要安币~

0

主题

9525

帖子

2466

安币

Android大神

Rank: 6Rank: 6

地板
发表于 2018-3-13 13:45:48 | 只看该作者
支持,感谢,祝巴士越来越好~

10

主题

9882

帖子

848

安币

代码手工艺人

Rank: 4

5#
发表于 2018-3-14 09:57:28 | 只看该作者
每次我都积极回帖的,想要安币~

2

主题

9694

帖子

2085

安币

Android大神

Rank: 6Rank: 6

QQ达人

6#
发表于 2018-3-15 10:11:06 | 只看该作者
感谢大神~

3

主题

626

帖子

4448

安币

码皇(巴士元老)

Rank: 8Rank: 8

QQ达人

7#
发表于 2018-9-26 15:51:28 | 只看该作者

3

主题

626

帖子

4448

安币

码皇(巴士元老)

Rank: 8Rank: 8

QQ达人

8#
发表于 2018-10-4 15:27:30 | 只看该作者
感谢分享,安卓巴士有你更精彩:)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by X3.2© 2001-2019 ( )

吉林快三 内蒙古快3计划 天津福彩网 上海快3开奖 天津福彩快乐十分 海南福彩网 海南福彩网 安徽快3 甘肃快3 吉林福彩网