閱讀646 返回首頁    go 阿裏雲 go 技術社區[雲棲]


API Demos 2.3 學習筆記 (7)-- Views->Buttons

更多精彩內容,請點擊閱讀:《API Demos 2.3 學習筆記》


Buttons示例介紹了定義Button,ToggleButton的基本方法。從示例布局文件來看,主要是在線性LinearLayout中定義三個Button,其中第一個為正常的Button,而第二個通過style屬性定義了一個小的Button,第三個為ToggleButton。
這裏我們主要介紹下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>


res-layout-buttons_1.xml

<?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

  上一篇:go android menu菜單的動態隱藏
  下一篇:go 數據庫快速入門教程--視頻