Android自定义Switch

前言

由于最近需要实现一个自定义的switch,本想写一个MySwitch继承Switch来进行自定义,但是后来发现其实只需要通过定义switch的thumb和track的图片来达到自定义switch样式的目的。

Android自定义Switch_第1张图片
关闭样式.jpeg
Android自定义Switch_第2张图片
开启样式.jpeg

实现

1.定义track

track即滑动的轨道。

在res/drawable内先定义一个轨道关闭状态的drawable,switch_gray_track.xml



    
    
    
    

再定义一个轨道开启状态的drawable,switch_yellow_track.xml



    
    
    

最后定义一个selector作为轨道的样式,switch_track.xml



    
    

2.定义thumb

thumb即滑动块。

在res/drawable内定义一个滑动块的drawable,switch_thumb.xml



    
    
    
    
    

增加了一个透明的描边,不然白色的小滑块就完全覆盖掉了外面的轨道。

3.设置Switch

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

Switch的高度是由track的高度决定的,宽度呢则可以通过设置switchMinWidth(开关最小宽度 )来更改。

    

源码

github: https://github.com/JeremySun823/MySwitchTest

参考链接

  • Android Switch控件修改样式

你可能感兴趣的:(Android自定义Switch)