android Android UI(Switch)詳解

目錄:

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)");

}

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宜咒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子揭北,更是在濱河造成了極大的恐慌概耻,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罐呼,死亡現(xiàn)場(chǎng)離奇詭異鞠柄,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)嫉柴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)厌杜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人计螺,你說(shuō)我怎么就攤上這事夯尽。” “怎么了登馒?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵匙握,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我陈轿,道長(zhǎng)圈纺,這世上最難降的妖魔是什么秦忿? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮蛾娶,結(jié)果婚禮上灯谣,老公的妹妹穿的比我還像新娘。我一直安慰自己蛔琅,他們只是感情好胎许,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著罗售,像睡著了一般辜窑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上寨躁,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天谬擦,我揣著相機(jī)與錄音,去河邊找鬼朽缎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛谜悟,可吹牛的內(nèi)容都是我干的话肖。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼葡幸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼最筒!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蔚叨,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤床蜘,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后蔑水,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體邢锯,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年搀别,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丹擎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡歇父,死狀恐怖蒂培,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情榜苫,我是刑警寧澤护戳,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站垂睬,受9級(jí)特大地震影響媳荒,放射性物質(zhì)發(fā)生泄漏抗悍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一肺樟、第九天 我趴在偏房一處隱蔽的房頂上張望檐春。 院中可真熱鬧,春花似錦么伯、人聲如沸疟暖。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)俐巴。三九已至,卻和暖如春硬爆,著一層夾襖步出監(jiān)牢的瞬間欣舵,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工缀磕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缘圈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓袜蚕,卻偏偏與公主長(zhǎng)得像糟把,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子牲剃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容