Android RadioGroup 单选按钮组

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

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

RadioGroup 单选按钮组

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

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

如果想改变 RadioGroupRadioButton 的排列方式,可以使用属性 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.javaViewGroup 添加一个 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.