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