646
微軟
API Demos 2.3 學習筆記 (7)-- Views->Buttons
更多精彩內容,請點擊閱讀:《API Demos 2.3 學習筆記》
這裏我們主要介紹下ToggleButton。這是一種具有選中和未選中兩種狀態的按鈕,類似開關按鈕。通過“android:textOn”屬性來設置選中狀態下按鈕上顯示的文本,而相應的,android:textOff”則是用來設置未選中狀態下按鈕上顯示的文本。具體設置參考如下:
android:textOn="開" android:textOff="關"ToggleButton可以根據按鈕狀態的不同,來執行不同的響應動作。
下麵主要介紹ToggleButton常用的兩種監聽方法:點擊監聽和狀態改變監聽
1、點擊監聽OnClickListener
ToggleButton的點擊監聽和普通Button的點擊監聽差不多,唯一不同的時,在響應點擊時,ToggleButton會根據點擊後狀態的不同,來執行不同的響應動作。
//聲明ToggleButton對象
private ToggleButton mtoggleBtn = null;
//通過findViewById獲得ToggleButton
mtoggleBtn = (ToggleButton)findViewById(R.id.button_toggle);
//點擊監聽
mtoggleBtn.setOnClickListener(new ToggleButton.OnClickListener() {
public void onClick(View v) {
// TODO 點擊按鍵時觸發響應
if(mtoggleBtn.isChecked()){
//當按鍵被按下,處於選中狀態時,執行此處定義的動作
}
else{
//當按鍵被未被按下,處於未選中狀態時,執行此處定義的動作
}
}
});
2、狀態改變監聽OnCheckedChangeListener
當ToggleButton的狀態發生改變時,即狀態從選中到未選中,或者從未選中到選中時,都會觸發狀態改變監聽事件。而在響應時,ToggleButton同樣會根據改變後狀態的不同,來執行不同的響應動作。普通Button不進行狀態區分,也就沒有狀態改變監聽事件。
//聲明ToggleButton對象
private ToggleButton mtoggleBtn = null;
//通過findViewById獲得ToggleButton
mtoggleBtn = (ToggleButton)findViewById(R.id.button_toggle);
//狀態改變監聽
mtoggleBtn.setOnCheckedChangeListener(new ToggleButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO 狀態改變時觸發響應
if(isChecked){
//當按鍵被按下,處於選中狀態時,執行此處定義的動作
}
else{
//當按鍵被未被按下,處於未選中狀態時,執行此處定義的動作
}
}
});
下麵我們進行實例代碼解析:
res-value-string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="buttons_1_normal">Normal</string>
<string name="buttons_1_small">Small</string>
<string name="buttons_1_toggle">Toggle</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<!--很多按鈕,可能需要滑動,所以需要放在ScrollView控件內部-->
<ScrollView xmlns:andro
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- 正常大小按鈕 -->
<Button android:
android:text="@string/buttons_1_normal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<!-- 小按鈕 -->
<Button android:
android:text="@string/buttons_1_small"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<!-- 觸發按鈕,通常有兩種狀態,代表開和關
android:textOff 按鈕未選中時,顯示該屬性定義的文本
android:textOn 按鈕被選中時,顯示該屬性定義的文本 -->
<ToggleButton android:
android:text="@string/buttons_1_toggle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
src-com.example.android.apis.view-Buttons1.java
package com.example.android.apis.view;
import com.example.android.apis.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.ToggleButton;
public class Buttons1 extends Activity {
//聲明ToggleButton對象
private ToggleButton mtoggleBtn = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.buttons_1);
//通過findViewById獲得ToggleButton
mtoggleBtn = (ToggleButton)findViewById(R.id.button_toggle);
//點擊監聽
mtoggleBtn.setOnClickListener(new ToggleButton.OnClickListener() {
public void onClick(View v) {
// TODO 點擊按鍵時觸發響應
if(mtoggleBtn.isChecked()){
//當按鍵被按下,處於選中狀態時,執行此處定義的動作
}
else{
//當按鍵被未被按下,處於未選中狀態時,執行此處定義的動作
}
}
});
//狀態改變監聽
mtoggleBtn.setOnCheckedChangeListener(new ToggleButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO 狀態改變時觸發響應
if(isChecked){
//當按鍵被按下,處於選中狀態時,執行此處定義的動作
}
else{
//當按鍵被未被按下,處於未選中狀態時,執行此處定義的動作
}
}
});
}
}
知識點1:
第二個按鈕添加了此屬性,表示該Button采用android係統內置的針對小按鈕的樣式buttonStyleSmall。從幫助文檔中,我們可以看出,係統內置屬性的調用格式有兩種,分別為"@[+][package:]type:name" 和 "?[package:][type:]name"。 以樣式buttonStyleSmall為例,套用兩種格式分別為: 和 。Button的其他樣式參考如下:
|
int |
buttonStyle |
正常按鈕樣式 |
|
int |
buttonStyleInset |
插入EditText的一種Button樣式 |
|
int |
buttonStyleSmall |
小按鈕樣式 |
|
int |
buttonStyleToggle |
ToggleButton樣式 |
預覽效果:

最後更新:2017-04-02 06:51:56