Android RadioGroup 单选按钮组
在 Android RadioButton 单选按钮 我们已经用 RadioButton
实现了单选按钮,但是它们并没有实现单选功能,这是为什么呢?
因为要实现单选功能,需要把所有的 RadioButton
放到 RadioGroup
里面
RadioGroup 单选按钮组
RadioGroup
用于将几个 RadioButton
组在一起形成单选按钮组,实现单选功能,也就是选中一个,会取消其它选项的选中
RadioGroup
初始化时可以所有选项都未选中,但一旦选中了就没办法取消不选中某个了,除非手动调用 clearCheck()
方法
如果想改变 RadioGroup
里 RadioButton
的排列方式,可以使用属性 android:orientation
我们写一个范例来演示下 RadioGroup
-
创建一个 空的 Android 项目
cn.twle.android.RadioButton
-
修改
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(); } });
-
复用上面的 demo
-
修改
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(); } }); } }