单选按钮

单选按钮可让用户从一系列选项中选择一个选项。对于可选项相互排斥的情况,如果您认为用户需要并排看到所有可用选项,则应使用单选按钮。如果没必要并排显示所有选项,则应改用微调框

要创建各个单选按钮选项,请在布局中创建一个 RadioButton。 不过,由于单选按钮选项是互斥的,因此必须将它们聚集到 RadioGroup 内。将它们聚集为一组后,系统就可以确保一次只选择一个单选按钮。

关键类如下:

响应点击事件

当用户选择一个单选按钮时,对应的 RadioButton 对象会收到点击事件。

要为按钮定义点击事件处理脚本,请将 android:onClick 属性添加到 XML 布局中的 <RadioButton> 元素。此属性的值必须是为了响应点击事件而调用的方法的名称。随后,托管布局的 Activity 必须实现相应的方法。

例如,以下是几个 RadioButton 对象:

<?xml version="1.0" encoding="utf-8"?>
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_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>

注意RadioGroupLinearLayout 的默认为垂直方向的子类。

在托管此布局的 Activity 内,以下方法可处理两个单选按钮的点击事件:

Kotlin

fun onRadioButtonClicked(view: View) {
    if (view is RadioButton) {
        // Is the button now checked?
        val checked = view.isChecked

        // Check which radio button was clicked
        when (view.getId()) {
            R.id.radio_pirates ->
                if (checked) {
                    // Pirates are the best
                }
            R.id.radio_ninjas ->
                if (checked) {
                    // Ninjas rule
                }
        }
    }
}

Java

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 属性中声明的方法必须具有完全如上所示的签名。具体而言,该方法必须满足以下条件:

  • 公开
  • 返回 void
  • View 指定为其唯一的参数(这将是被点击的 View

提示:如果需要自行更改单选按钮状态,请使用 setChecked(boolean)toggle() 方法。