Android的复选按钮、单选按钮、开关按钮是经常使用的几个组件。下面给出一个例子
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RadioGroup //单选按钮组
android:id="@+id/rg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RadioButton //单选按钮
android:id="@+id/rbm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true" //默认选中
android:text="man" />
<RadioButton
android:id="@+id/rbw"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="woman" />
<RadioButton
android:id="@+id/rbn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="no" />
</RadioGroup>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<CheckBox //复选框
android:id="@+id/cba"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="android" />
<CheckBox
android:id="@+id/cbj"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="java" />
<CheckBox
android:id="@+id/cbn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="net" />
</LinearLayout>
<ToggleButton //开关按钮
android:id="@+id/tb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOff="关灯"
android:textOn="开灯" />
</LinearLayout>
对应的Java代码。要注意的是他们要实现的监听接口不同。
package org.zqy.viewdemo;
import android.os.Bundle;
import android.app.Activity;
import android.widget.*;
import android.widget.RadioGroup.OnCheckedChangeListener;
public class CheckActivity extends Activity implements
CompoundButton.OnCheckedChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.check_main);
RadioGroup rg = (RadioGroup) findViewById(R.id.rg); // 得到单选按钮组
rg.setOnCheckedChangeListener(new OnCheckedChangeListener() { // 设置选择监听
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {// 根据checkedId获得选择的按钮
RadioButton rb = (RadioButton) findViewById(checkedId);
Toast.makeText(CheckActivity.this, rb.getText(),
Toast.LENGTH_SHORT).show();
}
});
// 得到复选按钮框
CheckBox cba = (CheckBox) findViewById(R.id.cba);
CheckBox cbj = (CheckBox) findViewById(R.id.cbj);
CheckBox cbn = (CheckBox) findViewById(R.id.cbn);
cba.setOnCheckedChangeListener(this);// 设置选择监听
cbj.setOnCheckedChangeListener(this);
cbn.setOnCheckedChangeListener(this);
final ToggleButton tb = (ToggleButton) findViewById(R.id.tb);
tb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
// 注意,此处实现的是CompoundButton的接口
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
}
});
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
Toast.makeText(CheckActivity.this, buttonView.getText(),
Toast.LENGTH_SHORT).show();
}
}
}