Android RadioGroup 单选按钮组

在 Android RadioButton 单选按钮 我们已经用 RadioButton 实现了单选按钮,但是它们并没有实现单选功能,这是为什么呢?

因为要实现单选功能,需要把所有的 RadioButton 放到 RadioGroup 里面

RadioGroup 单选按钮组

RadioGroup 用于将几个 RadioButton 组在一起形成单选按钮组,实现单选功能,也就是选中一个,会取消其它选项的选中

RadioGroup 初始化时可以所有选项都未选中,但一旦选中了就没办法取消不选中某个了,除非手动调用 clearCheck() 方法

如果想改变 RadioGroup 里 RadioButton 的排列方式,可以使用属性 android:orientation

我们写一个范例来演示下 RadioGroup

  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" >
    
        <RadioGroup
            android:id="@+id/loved"
            android:layout_width="match_parent" 
            android:layout_height="wrap_content" >
    
            <RadioButton 
                android:id="@+id/android"
                android:text="Android"
                android:checked="true" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content" />
    
            <RadioButton 
                android:id="@+id/ios"
                android:text="iOS" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content" />
    
            <RadioButton 
                android:id="@+id/java"
                android:text="Java" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content" />
    
        </RadioGroup>
    
    </LinearLayout>
    

要为每个 RadioButton 添加一个 id,不然单选功能会生效

运行范例,显示如下

RadioGroup 的属性、方法和事件

RadioGroup 只提供了一个 XML 属性 android:checkedButton 用于指定初始化时选中的 ID

属性 说明
android:checkedButton 初始化时选中的选项 ID (android:id)

RadioGroup 提供了很多方法用于选中或者获取选中的选项 ID ,下面列出常用的几个

方法 说明
check(int id) 根据 id 选中某个选项
clearCheck() 清除所有选项的选中状态,也就时一个都没选中
getCheckedRadioButtonId() 获取选中的选项 id
事件 说明
OnCheckedChangeListener 当 RadioGroup 中的某个选项被选中时触发

获得 RadioGroup 选中的值

我们可以通过给 RadioGroup 设置一个事件监听器 OnCheckedChangeListener 来监听选中的选项,然后获得该选项的值

RadioGroup loved = (RadioGroup) findViewById(R.id.loved);

// 为 RadioGroup 设置一个监听器 setOnCheckedChanged()  
loved.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        RadioButton radbtn = (RadioButton) findViewById(checkedId);
        Toast.makeText(getApplicationContext(), "你选了:" + radbtn.getText(), Toast.LENGTH_LONG).show();
    }
});
  1. 复用上面的 demo

  2. 修改 MainActivity.java 为 ViewGroup 添加一个 OnCheckedChangeListener 事件处理器

    package cn.twle.android.radiobutton;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    
    import android.widget.RadioButton;
    import android.widget.RadioGroup;
    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);
    
            RadioGroup loved = (RadioGroup) findViewById(R.id.loved);
    
            // 为 RadioGroup 设置一个监听器 setOnCheckedChanged()  
            loved.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
    
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    RadioButton radbtn = (RadioButton) findViewById(checkedId);
                    Toast.makeText(getApplicationContext(), "你选了:" + radbtn.getText(), Toast.LENGTH_LONG).show();
                }
            });
        }
    }
    

参考文档

  1. Android RadioButton
  2. Android RadioGroup

Android 基础教程

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

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

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