单选按钮
单选按钮允许用户从一组中选择一个选项。如果您认为用户需要并排查看所有可用选项,则应使用单选按钮的单选按钮。如果没有必要并排显示所有选项,请使用微调器。
要创建每个单选按钮选项,请在布局中创建RadioButton。但是,由于单选按钮是互斥的,因此必须将它们组合在一个RadioGroup中。通过将它们组合在一起,系统确保一次只能选择一个单选按钮。
响应Click事件
当用户选择一个单选按钮时,相应的RadioButton对象接收点击事件。
要为按钮定义click事件处理程序,请将android:onClick属性添加到XML布局中的<RadioButton>元素。此属性的值必须是您要响应click事件时要调用的方法的名称。然后,托管布局的Activity必须实现相应的方法。
例如,这里有几个RadioButton对象:
<?xml version="1.0" encoding="utf-8"?>
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton android:id="@+id/radio_pirates"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pirates"
android:onClick="onRadioButtonClicked"/>
<RadioButton android:id="@+id/radio_ninjas"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ninjas"
android:onClick="onRadioButtonClicked"/>
</RadioGroup>
注意:RadioGroup是LinearLayout的子类,默认情况下具有垂直方向。
在承载此布局的Activity中,以下方法处理两个单选按钮的click事件:
public void onRadioButtonClicked(View view) {
// Is the button now checked?
boolean checked = ((RadioButton) view).isChecked();
// Check which radio button was clicked
switch(view.getId()) {
case R.id.radio_pirates:
if (checked)
// Pirates are the best
break;
case R.id.radio_ninjas:
if (checked)
// Ninjas rule
break;
}
}
您在android:onClick属性中声明的方法必须具有完全如上所示的签名。具体来说,该方法必须:
- 公开的
- 返回viod
- 将View定义为唯一参数(这将是单击的View)
提示:如果您需要自己更改单选按钮状态(例如加载已保存的CheckBoxPreference时),请使用setChecked(boolean)或toggle()方法。