最近复习安卓基础的时候发现没有写关于单选按钮、复选按钮的博客,可能因为以前学习的时候感觉太简单了就没有写,现在补上吧
当我们在各种客户端注册账号的时候,会有几项单选项,比如选择您的性别。下面就是学习怎么实现这种效果
一、安卓中,单选按钮用RadioButton表示,因为RadioButton是Button的子类,所以可以使用Button的各种属性
RadioButton一般是不单独使用的需要结合RadioGroup控件一起使用,将若干个RadioButton放在一个RadioGroup中,那么将只能选择RadioGroup中的某一个RadioButton
比如讲 语文、数学,英语放在“你最喜欢的课程中” 那么用户将只能选择一个课程
二、使用
首先看下布局文件
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" > 6 7 <TextView 8 android:layout_width="wrap_content" 9 android:layout_height="wrap_content" 10 android:text="性别" 11 android:textSize="18dp"/> 12 <RadioGroup 13 android:layout_width="wrap_content" 14 android:layout_height="wrap_content" 15 android:id="@+id/id_radiogroup" 16 android:orientation="horizontal" 17 18 > 19 20 <RadioButton 21 android:layout_width="wrap_content" 22 android:layout_height="wrap_content" 23 android:id="@+id/radio_1" 24 android:checked="true" //设置默认已被选择中 25 android:text="男" 26 /> 27 <RadioButton 28 android:layout_width="wrap_content" 29 android:layout_height="wrap_content" 30 android:id="@+id/radio_2" 31 android:text="女" 32 /> 33 34 </RadioGroup> 35 <Button 36 android:layout_width="wrap_content" 37 android:layout_height="wrap_content" 38 android:id="@+id/tijiao" 39 android:text="提交"/> 40 </LinearLayout>
可以看到两个RadioButton被放到了一个RadioGroup中,这两个RadioButton的值分别“男”,“女”
表示我们只能选择其中的任意一项选项
效果图:
下面再看JAVA文件
1 package base_ui; 2 3 import com.example.allcode.R; 4 5 import android.app.Activity; 6 import android.os.Bundle; 7 import android.view.View; 8 import android.view.View.OnClickListener; 9 import android.widget.Button; 10 import android.widget.RadioButton; 11 import android.widget.RadioGroup; 12 import android.widget.RadioGroup.OnCheckedChangeListener; 13 import android.widget.Toast; 14 15 public class Ui_RadioButton extends Activity{ 16 private RadioGroup radiogroup; 17 private RadioButton radio_one; 18 private RadioButton radio_two; 19 private Button tijiao; 20 String str; //存放点击的按钮的值 21 @Override 22 protected void onCreate(Bundle savedInstanceState) { 23 // TODO Auto-generated method stub 24 super.onCreate(savedInstanceState); 25 setContentView(R.layout.base_ui_radiobutton); 26 27 radiogroup = (RadioGroup) findViewById(R.id.id_radiogroup); 28 radio_one = (RadioButton) findViewById(R.id.radio_1); 29 radio_two = (RadioButton) findViewById(R.id.radio_2); 30 tijiao = (Button) findViewById(R.id.tijiao); 31 32 //改变单选按钮组的值时的响应事件 33 radiogroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { 34 35 @Override 36 public void onCheckedChanged(RadioGroup group, int checkedId) { 37 // TODO Auto-generated method stub 38 RadioButton radio_button = (RadioButton)findViewById(checkedId); 39 str = radio_button.getText().toString().trim();//获取被选中的单选按钮的值 40 Toast.makeText(Ui_RadioButton.this, "选择单选按钮的值为:"+str, 1).show(); 41 } 42 }); 43 44 //单击其他按钮时的响应事件 45 tijiao.setOnClickListener(new OnClickListener() { 46 47 @Override 48 public void onClick(View v) { 49 // TODO Auto-generated method stub 50 51 for(int i = 0;i<radiogroup.getChildCount();i++) //循环按钮组子按钮的数量次 52 { 53 RadioButton r = (RadioButton)radiogroup.getChildAt(i); //根据索引值获取单选按钮 54 if(r.isChecked()) //判断按钮是否被选中 55 { 56 57 str = r.getText().toString().trim();//获取被选中的单选按钮的值 58 Toast.makeText(Ui_RadioButton.this, "点击提交按钮时获取的单选按钮的值为:"+str, 1).show(); 59 break; 60 } 61 } 62 } 63 }); 64 } 65 66 }
注释很明白了,很简单的
效果图: