更多精彩内容,请点击阅读:《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: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样式 |
预览效果: