自定義View之Switch

今天我們來聊一下自定義Switch控件,我們先看一看Switch的相關屬性:

1.Switch相關屬性

  • android:splitTrack:是否設置間隙讓滑塊與底部圖片分隔開來
  • android:switchMinWidth:設置開關的最小寬度
  • android:switchPadding:設置滑塊內文字的間隔
  • android:switchTextAppearance:設置開關的文字外觀
  • android:textOff:按鈕沒有被選中時顯示的文字
  • android:textOn:按鈕被選中時顯示的文字
  • android:showText:設置on/off的時候是否顯示文字,如果不顯示則textOn,textOff不起作用
  • android:textStyle:文字風格,粗體,斜體
  • android:track:滑塊底部的背景圖片,類似Background效果
  • android:thumb:滑塊的圖片

2.Switch普通效果展示及監聽

2.1普通效果展示

代碼:


效果:


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

代碼:


效果:


不得不說真心醜,看來還得自定義。

2.2監聽

3.Switch的自定義

自定義Switch的步驟如下:

  • 定義Switch的開關按鈕狀態
  • 定義一下Switch滑動軌道的狀
  • 自定義文字顏色
  • 應用效果展示
3.1定義Switch的開關按鈕狀態

我們先定義thumb這個屬性值,它有開關兩種狀態

  • 我們先定義打開的thumb的xml文件叫switch_custom_thumb_on


  • 關閉thumb的xml的文件叫switch_custom_thumb_off


  • 定義一個selector:switch_custom_thumb_selector


3.2 Switch滑動軌道的狀態

定義track這個屬性值,它也有開啓和關閉兩種狀態

  • 打開狀態的track:switch_custom_track_on


  • 關閉狀態的track: switch_custom_track_off


  • 定義一個selector:switch_custom_track_selector


補充:
thumb和track默認大小是一致的,那如果我們想看起來thumb比tarck或者thumb比track小該怎麼辦呢?

  • 想track高度低於thumb高度就給track增加一個透明的邊框。
  • 想track高度高於thumb按鈕高度就給thumb按鈕增加一個透明的邊框。
3.3 定義Switch文字的顏色

定義switchTextAppearance這個屬性值

  • 定義一個文本顏色狀態的selector:switch_switchtextcolor_selector.xml
  • 在style文件中定義一個樣式叫 SwitchTextColorTheme的樣式


3.3 定義Switch效果展示

代碼:


效果:

基本也就這麼多,告辭!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章