目錄:
1.應(yīng)用場(chǎng)景與概述
2.常用屬性
3.簡(jiǎn)單使用
4.更改默認(rèn)Switch的樣式
5.自定義Switch
1.應(yīng)用場(chǎng)景與概述
Switch是在4.0以后推出的敞嗡,所以要注意開(kāi)發(fā)時(shí)的minsdk設(shè)置,google在API 21后也推出support v7 包下的SwitchCompa的Material Design
開(kāi)關(guān)控件玖媚,對(duì)低版本的有了更好的的支持吟宦。其實(shí)switch的應(yīng)用場(chǎng)景和ToggleButton類似蜗侈,多應(yīng)用于兩種狀態(tài)的切換。
2.常用屬性
[plain]view plaincopy
android:typeface="normal":設(shè)置字體類型
android:track="":設(shè)置開(kāi)關(guān)的軌跡圖片
android:textOff="開(kāi)":設(shè)置開(kāi)關(guān)checked的文字
android:textOn="關(guān)":設(shè)置開(kāi)關(guān)關(guān)閉時(shí)的文字
android:thumb="":設(shè)置開(kāi)關(guān)的圖片
android:switchMinWidth="":開(kāi)關(guān)最小寬度
android:switchPadding="":設(shè)置開(kāi)關(guān)?與文字的空白距離
android:switchTextAppearance="":設(shè)置文本的風(fēng)格
android:checked="":設(shè)置初始選中狀態(tài)
android:splitTrack="true":是否設(shè)置一個(gè)間隙蚕泽,讓滑塊與底部圖片分隔(API?21及以上)
android:showText="true":設(shè)置是否顯示開(kāi)關(guān)上的文字(API?21及以上)
3.簡(jiǎn)單使用
3.1)主布局
[html]view plaincopy
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.aswitch.MainActivity">
android:typeface="normal":設(shè)置字體類型
android:track="":設(shè)置開(kāi)關(guān)的軌跡
android:textOff="開(kāi)":設(shè)置開(kāi)關(guān)checked的文字
android:textOn="關(guān)":設(shè)置開(kāi)關(guān)關(guān)閉時(shí)的文字
android:thumb="":設(shè)置開(kāi)關(guān)的圖片
android:switchMinWidth="":開(kāi)關(guān)最小寬度
android:switchPadding="":設(shè)置開(kāi)關(guān)?與文字的空白距離
android:switchTextAppearance="":設(shè)置文本的風(fēng)格
android:checked="":設(shè)置初始選中狀態(tài)
android:splitTrack="true":是否設(shè)置一個(gè)間隙,讓滑塊與底部圖片分隔
-->
android:id="@+id/switch_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="switch:"/>
android:layout_marginTop="10dp"
android:layout_below="@+id/switch_tv"
android:id="@+id/switch1"
android:typeface="normal"
android:textOff="開(kāi)"
android:textOn="關(guān)"
android:switchMinWidth="40dp"
android:switchPadding="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
android:id="@+id/text"
android:layout_marginTop="10dp"
android:layout_below="@+id/switch1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello?World!"/>
android:layout_below="@+id/text"
android:id="@+id/switch_compat_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="switchCompat:"/>
android:layout_marginTop="10dp"
android:layout_below="@+id/switch_compat_tv"
android:id="@+id/switch_compat"
android:typeface="normal"
android:switchMinWidth="40dp"
android:switchPadding="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
android:id="@+id/text1"
android:layout_marginTop="10dp"
android:layout_below="@+id/switch_compat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello?World!"/>
3.2)主布局java類
[java]view plaincopy
packagecom.example.aswitch;
importandroid.os.Bundle;
importandroid.support.v7.app.AppCompatActivity;
importandroid.support.v7.widget.SwitchCompat;
importandroid.widget.CompoundButton;
importandroid.widget.Switch;
importandroid.widget.TextView;
publicclassMainActivityextendsAppCompatActivityimplementsCompoundButton.OnCheckedChangeListener{
privateSwitch?aSwitch;
privateSwitchCompat?aSwitchCompat;
privateTextView?text1,text2,switchText,switchCompatText;
@Override
protectedvoidonCreate(Bundle?savedInstanceState)?{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//實(shí)例化
aSwitch?=?(Switch)?findViewById(R.id.switch1);
aSwitchCompat?=?(SwitchCompat)?findViewById(R.id.switch_compat);
text1?=?(TextView)?findViewById(R.id.text);
text2?=?(TextView)?findViewById(R.id.text1);
//設(shè)置Switch事件監(jiān)聽(tīng)
aSwitch.setOnCheckedChangeListener(this);
aSwitchCompat.setOnCheckedChangeListener(this);
}
/*
繼承監(jiān)聽(tīng)器的接口并實(shí)現(xiàn)onCheckedChanged方法
*?*/
@Override
publicvoidonCheckedChanged(CompoundButton?buttonView,booleanisChecked)?{
switch(buttonView.getId()){
caseR.id.switch1:
if(isChecked){
text1.setText("開(kāi)");
}else{
text1.setText("關(guān)");
}
break;
caseR.id.switch_compat:
if(isChecked){
text2.setText("開(kāi)");
}else{
text2.setText("關(guān)");
}
break;
default:
break;
}
}
}
3.3)截圖效果
4.更改默認(rèn)Switch的樣式
4.1)在styles.xml中自定義style
[html]view plaincopy
@android:color/holo_green_dark
@color/colorAccent
@color/colorPrimaryDark
4.1)在布局文件中通過(guò)android:theme="@style/mySwitch"設(shè)置
[html]view plaincopy
android:layout_marginTop="10dp"
android:layout_below="@+id/switch_compat_tv"
android:id="@+id/switch_compat"
android:typeface="normal"
android:theme="@style/mySwitch"
android:switchMinWidth="40dp"
android:switchPadding="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
5.自定義Switch
5.1)導(dǎo)入資源圖片thumb.png ,thumb_on.png ,track_nomal.png ,track_on.png ,track_press.png
5.2)實(shí)現(xiàn)thumb_selector.xml
[html]view plaincopy
5.3)實(shí)現(xiàn)track_selector.xml
[html]view plaincopy
5.4)主布局actiity_second.xml
[html]view plaincopy
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.aswitch.SecondActivity">
android:id="@+id/CustomSwitchCompat_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CustomSwitchCompat:"/>
android:layout_marginTop="10dp"
android:layout_below="@+id/CustomSwitchCompat_tv"
android:id="@+id/CustomSwitchCompat"
android:layout_width="wrap_content"
android:minWidth="40dp"
android:minHeight="20dp"
android:layout_height="wrap_content"/>
android:id="@+id/custom_result"
android:layout_marginTop="10dp"
android:layout_below="@+id/CustomSwitchCompat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello?World!"/>
5.5)主布局java類SecondActivity.java
[java]view plaincopy
packagecom.example.aswitch;
importandroid.os.Bundle;
importandroid.support.v7.app.AppCompatActivity;
importandroid.support.v7.widget.SwitchCompat;
importandroid.widget.CompoundButton;
importandroid.widget.Switch;
importandroid.widget.TextView;
publicclassSecondActivityextendsAppCompatActivityimplementsCompoundButton.OnCheckedChangeListener{
privateSwitchCompat?customSwitchCompat;
privateTextView?custom_result,CustomSwitchCompat_tv;
@Override
protectedvoidonCreate(Bundle?savedInstanceState)?{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
//實(shí)例化
customSwitchCompat?=?(SwitchCompat)?findViewById(R.id.CustomSwitchCompat);
custom_result?=?(TextView)?findViewById(R.id.custom_result);
//設(shè)置自定義的thumb和track
customSwitchCompat.setThumbResource(R.drawable.thumb_selector);
customSwitchCompat.setTrackResource(R.drawable.track_selector);
//設(shè)置Switch事件監(jiān)聽(tīng)
customSwitchCompat.setOnCheckedChangeListener(this);
}
/*
繼承監(jiān)聽(tīng)器的接口并實(shí)現(xiàn)onCheckedChanged方法
*?*/
@Override
publicvoidonCheckedChanged(CompoundButton?buttonView,booleanisChecked)?{
if(isChecked){
custom_result.setText("開(kāi)");
}else{
custom_result.setText("關(guān)");
}
}
}