Android RadioButton

分享到:

RadioButton单选按钮是一种双状态的按钮,可以选中或不选中。在单选按钮没有被选中时,用户能够按下或点击来选中它。但是,与复选框相反,用户一旦选中就不能够取消选中(可以通过代码来控制,界面上点击的效果是一旦选中之后就不能取消选中了)。
多个单选按钮通常与RadioGroup同时使用。当一个单选组(RadioGroup)包含几个单选按钮时,选中其中一个的同时将取消其它选中的单选按钮。

RadioButton结构:

java.lang.Object

	android.view.View

		android.widget.TextView

			android.widget.Button

				android.widget.CompoundButton

					android.widget.RadioButton

先介绍一个常用的公共方法

public void toggle () 将单选按钮更改为与当前选中状态相反的状态。

如果这个单选按钮已经选中,这个方法将不切换单选按钮的状态
@Override
public void toggle(){
    if(!isChecked()){
         super.toggle();
    }
}

RadioButton和CheckBox的区别:

1、单个RadioButton在选中后,通过点击无法变为未选中
单个CheckBox在选中后,通过点击可以变为未选中

2、一组RadioButton,只能同时选中一个
一组CheckBox,能同时选中多个

3、RadioButton在大部分UI框架中默认都以圆形表示
CheckBox在大部分UI框架中默认都以矩形表示

RadioButton和RadioGroup的关系:

1、RadioButton表示单个圆形单选框,而RadioGroup是可以容纳多个RadioButton的容器
2、每个RadioGroup中的RadioButton同时只能有一个被选中
3、不同的RadioGroup中的RadioButton互不相干,即如果组A中有一个选中了,组B中依然可以有一个被选中
4、大部分场合下,一个RadioGroup中至少有2个RadioButton
5、大部分场合下,一个RadioGroup中的RadioButton默认会有一个被选中,并建议您将它放在RadioGroup中的起始位置

通过一个实例来了解:RadioButton

运行效果如下图所示:

XML布局文件内容:

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
 <TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="请选择您的性别:"
android:textSize="9pt"
/>
 <RadioGroup android:id="@+id/radioGroup" android:contentDescription="性别" android:layout_width="wrap_content" android:layout_height="wrap_content">
<RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/radioMale" android:text="男" android:checked="true"></RadioButton>
<RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/radioFemale" android:text="女"></RadioButton>
 </RadioGroup>
<TextView
android:id="@+id/tvSex"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="您的性别是:男"
android:textSize="9pt"
/>
</LinearLayout>

JAVA源码内容:

TextView tv = null;//根据不同选项所要变更的文本控件
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          
          setContentView(R.layout.main);
          
          //根据ID找到该文本控件
          tv = (TextView)this.findViewById(R.id.tvSex);
         //根据ID找到RadioGroup实例
         RadioGroup group = (RadioGroup)this.findViewById(R.id.radioGroup);
         //绑定一个匿名监听器
         group.setOnCheckedChangeListener(new OnCheckedChangeListener() {
             
             @Override
             public void onCheckedChanged(RadioGroup arg0, int arg1) {
                 // TODO Auto-generated method stub
                 //获取变更后的选中项的ID
                 int radioButtonId = arg0.getCheckedRadioButtonId();
                 //根据ID获取RadioButton的实例
                 RadioButton rb = (RadioButton)MyActiviy.this.findViewById(radioButtonId);
                 //更新文本内容,以符合选中项
                 tv.setText("您的性别是:" + rb.getText());
             }
         });
     }
昵    称:
验证码:

相关文档:

Android控件
Android基础知识
Android组件
Android实例