今天我們來聊一下自定義Switch控件,我們先看一看Switch的相關(guān)屬性:
1.Switch相關(guān)屬性
- android:splitTrack:是否設(shè)置間隙讓滑塊與底部圖片分隔開來
- android:switchMinWidth:設(shè)置開關(guān)的最小寬度
- android:switchPadding:設(shè)置滑塊內(nèi)文字的間隔
- android:switchTextAppearance:設(shè)置開關(guān)的文字外觀
- android:textOff:按鈕沒有被選中時顯示的文字
- android:textOn:按鈕被選中時顯示的文字
- android:showText:設(shè)置on/off的時候是否顯示文字,如果不顯示則textOn,textOff不起作用
- android:textStyle:文字風(fēng)格,粗體,斜體
- android:track:滑塊底部的背景圖片,類似Background效果
- android:thumb:滑塊的圖片
2.Switch普通效果展示及監(jiān)聽
2.1普通效果展示
代碼:

image.png
效果:

1542502989411.gif
那我們加入thumb和track屬性看看效果,為了方便我們都用項目自帶的機器人。效果如下:
代碼:

image.png
效果:

1542502939538.gif
不得不說真心丑,看來還得自定義。
2.2監(jiān)聽

image.png
3.Switch的自定義
自定義Switch的步驟如下:
- 定義Switch的開關(guān)按鈕狀態(tài)
- 定義一下Switch滑動軌道的狀
- 自定義文字顏色
- 應(yīng)用效果展示
3.1定義Switch的開關(guān)按鈕狀態(tài)
我們先定義thumb這個屬性值,它有開關(guān)兩種狀態(tài)
-
我們先定義打開的thumb的xml文件叫switch_custom_thumb_on
image.png
-
關(guān)閉thumb的xml的文件叫switch_custom_thumb_off
image.png
-
定義一個selector:switch_custom_thumb_selector
image.png
3.2 Switch滑動軌道的狀態(tài)
定義track這個屬性值,它也有開啟和關(guān)閉兩種狀態(tài)
-
打開狀態(tài)的track:switch_custom_track_on
image.png
-
關(guān)閉狀態(tài)的track: switch_custom_track_off
image.png
-
定義一個selector:switch_custom_track_selector
image.png
補充:
thumb和track默認(rèn)大小是一致的,那如果我們想看起來thumb比tarck或者thumb比track小該怎么辦呢?
- 想track高度低于thumb高度就給track增加一個透明的邊框。
- 想track高度高于thumb按鈕高度就給thumb按鈕增加一個透明的邊框。
3.3 定義Switch文字的顏色
定義switchTextAppearance這個屬性值
- 定義一個文本顏色狀態(tài)的selector:switch_switchtextcolor_selector.xml

image.png
-
在style文件中定義一個樣式叫 SwitchTextColorTheme的樣式
image.png
3.3 定義Switch效果展示
代碼:

image.png
效果:

1542526310848.gif
基本也就這么多,告辭!






