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:android="http://schemas.android.com/apk/res/android"
    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:id="@+id/button_normal"
            android:text="@string/buttons_1_normal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <!-- 小按钮 -->
        <Button android:id="@+id/button_small"
            style="?android:attr/buttonStyleSmall"
            android:text="@string/buttons_1_small"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        
        <!-- 触发按钮,通常有两种状态,代表开和关
        	 android:textOff  按钮未选中时,显示该属性定义的文本
        	 android:textOn   按钮被选中时,显示该属性定义的文本 -->       
        <ToggleButton android:id="@+id/button_toggle"
            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:style="?android:attr/buttonStyleSmall"
第二个按钮添加了此属性,表示该Button采用android系统内置的针对小按钮的样式buttonStyleSmall。从帮助文档中,我们可以看出,系统内置属性的调用格式有两种,分别为"@[+][package:]type:name" 和  "?[package:][type:]name"。 以样式buttonStyleSmall为例,套用两种格式分别为:style="@+android:attr/buttonStyleSmall" 和 style="?android:attr/buttonStyleSmall"。Button的其他样式参考如下:

int

buttonStyle

正常按钮样式

int

buttonStyleInset

插入EditText的一种Button样式

int

buttonStyleSmall

小按钮样式

int

buttonStyleToggle

ToggleButton样式

预览效果:

API Demos 2.3 学习笔记 (7)-- Views->Buttons_第1张图片

你可能感兴趣的:(android,String,api,layout,button,encoding)