更多精彩内容,请点击阅读:《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样式 |
预览效果:
欢迎大家关注我的微信公众号:
微信公众号:sn0wdr1am