安卓中自带的Switch控件在很多时候总觉得和整体系统风格不符,很多时候,自定义Switch是一种方法。但其实不用这么麻烦,安卓自带的Switch通过修改一些属性,也可以达到和自定义Switch差不多的一个效果。个人感觉,Switch的属性设置和其他控件还是有挺大区别的。因此,写下此文,方便有需要的同学参考。

如图:

19bea212bc4d

关闭.png

19bea212bc4d

开.png

实现以上的效果主要分两个步骤:

第一个就是底部颜色的变化:

1.关闭时候为白色。

在 res/drawable 文件夹下面,写两个滑动条的底图 ,通过一个选择器selector进行控制。

gray_track.xml :非打开状态,白色的底图

android:endColor="#ffffff"

android:startColor="#ffffff" />

android:color="#e3e3e3"/>

打开状态下,灰色的底图。

android:endColor="#e3e3e3"

android:startColor="#e3e3e3" />

android:color="#e3e3e3"/>

选择器 track.xml 用于控制Switch不同状态下,滑动条的底图

第二步:滑动按钮:底色我用的接近白色,关闭,打开时,白色外面夹带灰色,代码是一样。

白色按钮边上一圈颜色为深灰色:

android:endColor="#ffffff"

android:startColor="#ffffff" />

android:color="#e3e3e3"/>

选择器 thumb.xml 用于控制Switch不同状态下,按钮的显示状态

最后 将以上选择器设置给Switch,就好了

android:id="@+id/switch_service_chat_info_top"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:layout_centerVertical="true"

android:track="@drawable/track"

android:thumb="@drawable/thumb"

android:checked="false" />

补充:

大家在运用时候会发现修改 android:layout_width , android:layout_height 这两个属性,并不会实际修改Switch的大小设置大了,边上会出现空白部分,设置小了,Switch显示不全。

实际设置高度方法:

上面定义滑动条和按钮底图的地方相信大家都注意到,

这行代码,修改 green_track.xml,gray_track.xml 中的高度,即可修改高度(修改green_thumb.xml gray_thumb.xml 中的高度貌似无效)。

假如:按钮上有文字的话,修改滑动按钮的宽度:滑动按钮的宽度和按钮上的文字有关,想要按钮变长,在按钮显示的文字上添加几个空字符串即可,想要按钮变短的话,减少按钮上显示的字即可(修改按钮上字体大小也可以试试)

Switch的属性

android:textOn=" "

android:textOff=" "

总结到此结束。。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐