Android RadioButton 单选按钮

Android RadioButton 单选按钮就是只能够选中一个,所以我们需要把 RadioButton 放到 RadioGroup 按钮组中,从而实现单选功能

RadioButton

RadioButton 继承自 Button,所以拥有 Button 的所有公开属性和方法

RadioButton 只有两个状态,选中与未选中,所以也就只有一个属性是最重要的,那就是 android:checked

属性 说明
android:checked 设置或获取 RadioButton 的选中状态

如果 RadioButton 未选中,那么点击它可以让它选中,但反过来是不可以的,就是不能从选中状态到未选中状态

我们用一个范例来学习下 RadioButton

  1. 创建一个 空的 Android 项目 cn.twle.android.RadioButton

  2. 修改 activity_main.xml 添加一个 RadioButton

    <?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:padding="8dp" 
        android:orientation="horizontal" >
    
        <RadioButton 
            android:id="@+id/android"
            android:text="Android"
            android:checked="true" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" />
    
    </LinearLayout>
    

运行范例,显示如下

获得选中的值

如果想要捕获 RadioButton 的选中状态,可以为 RadioButton 添加一个事件属性 android:onClick ,然后在事件中调用 isChecked() 判断 RadioButton 是否选中

属性 说明
android:onClick 为控件添加一个单击事件方法,当控件被点击时会调用该方法
方法 说明
isChecked() RadioButton 实例的方法,用于判断 RadioButton 是否选中

复用上面创建的项目,然后

  1. 修改 activity_main.xmlRadioButton 添加属性 android:onClick="onRadioButtonClicked"

    <?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:padding="8dp" 
        android:orientation="horizontal" >
    
        <RadioButton 
            android:id="@+id/android"
            android:text="Android"
            android:onClick="onRadioButtonClicked"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" />
    
        <RadioButton 
            android:id="@+id/ios"
            android:text="iOS"
            android:onClick="onRadioButtonClicked"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" />
    
    </LinearLayout>
    
  2. 修改 MainActivity.java 添加 onRadioButtonClicked() 方法

    package cn.twle.android.radiobutton;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    
    import android.widget.RadioButton;
    import android.widget.Toast;
    
    import android.view.View;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate( savedInstanceState );
            setContentView(R.layout.activity_main);
        }
    
        public void onRadioButtonClicked( View view) {
    
            // 判断是否在 RadioButton 上单击
            boolean checked = ((RadioButton) view).isChecked();
    
            // 判断是哪个 RadioButton 被单击
            switch(view.getId()) {
                case R.id.android:
                case R.id.ios:
                    if (checked)
                        Toast.makeText(getApplicationContext(), "你选择了:" + ((RadioButton)view).getText(), Toast.LENGTH_LONG).show();
            }
        }
    }
    

运行范例,显示如下

我们发现已经可以实现捕获 RadioButton 的选中事件,但是,有点不对,为什么不是单选呢?

参考文档

  1. RadioButton

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.