Android RadioButton 单选按钮
Android RadioButton 单选按钮就是只能够选中一个,所以我们需要把 RadioButton 放到 RadioGroup 按钮组中,从而实现单选功能
RadioButton
RadioButton
继承自 Button
,所以拥有 Button
的所有公开属性和方法
RadioButton
只有两个状态,选中与未选中,所以也就只有一个属性是最重要的,那就是 android:checked
属性 | 说明 |
---|---|
android:checked | 设置或获取 RadioButton 的选中状态 |
如果 RadioButton
未选中,那么点击它可以让它选中,但反过来是不可以的,就是不能从选中状态到未选中状态
我们用一个范例来学习下 RadioButton
-
创建一个 空的 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" > <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 是否选中 |
复用上面创建的项目,然后
-
修改
activity_main.xml
给RadioButton
添加属性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>
-
修改
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
的选中事件,但是,有点不对,为什么不是单选呢?