1. Switch控件的基本使用
(1) 相關(guān)屬性
android:switchMinWidth:設(shè)置開關(guān)的最小寬度
android:switchPadding:設(shè)置滑塊內(nèi)文字的間隔
android:switchTextAppearance:設(shè)置開關(guān)的文字外觀
android:text:設(shè)置開關(guān)的名稱
android:textStyle:文字風(fēng)格(粗體、斜體等)
android:showText:設(shè)置on/off的時(shí)候是否顯示文字(boolean)
android:textOff:按鈕沒有被選中時(shí)顯示的文字
android:textOn:按鈕被選中時(shí)顯示的文字
android:thumb:滑塊的圖片
android:track:軌道的圖片
android:splitTrack:是否設(shè)置一個(gè)間隙一睁,讓滑塊與底部圖片分隔(boolean)
(2) 使用示例
<Switch
android:id="@+id/activity_main_switchProduction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true">
(3) 原生效果
(4) 開關(guān)監(jiān)控回調(diào)
switchProduction.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(!buttonView.isPressed()){ // 每次 setChecked 時(shí)會(huì)觸發(fā)onCheckedChanged 監(jiān)聽回調(diào),而有時(shí)我們?cè)谠O(shè)置setChecked后不想去自動(dòng)觸發(fā) onCheckedChanged 里的具體操作, 即想屏蔽掉onCheckedChanged;加上此判斷
return;
}
if(isChecked){}
}
});
2. 自定義 Switch開關(guān)樣式
<Switch
android:id="@+id/activity_main_switchProduction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="默認(rèn)"
android:thumb="@drawable/thumb_selector"
android:track="@drawable/track_selector"/>
(1) thumb_selector.xml:按鈕樣式
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/thumb_on" android:state_checked="true"/>
<item android:drawable="@drawable/thumb_off" android:state_checked="false"/>
</selector>
- thumb_on.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#ffffff" />
<size
android:width="20dp"
android:height="20dp" />
<!-- 開關(guān)按鈕增加一個(gè)透明的邊框:實(shí)現(xiàn)軌道高度高于開關(guān)按鈕高度的效果-->
<stroke
android:width="5dp"
android:color="@android:color/transparent"/>
</shape>
- thumb_off.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#E3E3E3" />
<size
android:width="20dp"
android:height="20dp" />
<!-- 開關(guān)按鈕增加一個(gè)透明的邊框:實(shí)現(xiàn)軌道高度高于開關(guān)按鈕高度的效果-->
<stroke
android:width="5dp"
android:color="@android:color/transparent"/>
</shape>
(2) track_selector.xml:軌道樣式
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/track_on" android:state_checked="true"/>
<item android:drawable="@drawable/track_off" android:state_checked="false"/>
</selector>
- track_on.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#00a9e2" />
<corners android:radius="20dp"/>
</shape>
- track_on.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ccc" />
<corners android:radius="20dp" />
</shape>
tips
:Switch自定義樣式,軌道的寬度會(huì)隨著開關(guān)按鈕的寬度自動(dòng)變化舔箭,如果想要修改軌道的寬度,修改開關(guān)按鈕的寬度就可以了;默認(rèn)情況下開關(guān)按鈕和滑動(dòng)軌道的高度是一樣的(并且在xml文件中對(duì)軌道的寬高設(shè)置是無(wú)效的),如果想要修改軌道的高度卵皂,即
- 軌道高度低于開關(guān)按鈕高度(第一個(gè)效果):軌道增加一個(gè)透明的邊框
- 軌道高度高于開關(guān)按鈕高度(第二個(gè)效果):開關(guān)按鈕增加一個(gè)透明的邊框