单选按钮其实就是好几个按钮成为了一个大家族,我们每次只能够选择一个成员,创建单选按钮的方法就是把平常我们见到的普通按钮Button给他们装到一个盒子里面,让他们成为一个按钮组,所以就有了RadioGroup的产生。

<RadioGroup
    android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><RadioButton
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="男"/><RadioButton
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="女"/>
</RadioGroup>

以上代码就是我们创建了一个单选按钮组,在这个按钮组里面我们创建了两个按钮(当然我们也可以创建更多的),注意我们一定要把每一个Button给包含到RadioGroup中。
其中android:orientation="horizontal" 可以设置按钮组中按钮的排列方向

horizontal   按钮横向排列
vertical     按钮纵向排列

按钮组创建出来了,但是现在这些个代码还不能读取每个按钮的状态,接下来我们要做的就是获取每一个按钮的选中状态。我们有两种方式获得,第一种是当改变单选按钮组的值时获取,第二种是当单击其他按钮时获取。
1、改变单选按钮组的值时获取
首先我们要为刚才创建的按钮组设置一个id属性

<RadioGroup
    android:id="@+id/radioGroup1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><RadioButton
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="男"/><RadioButton
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="女"/>
</RadioGroup>

然后在主方法中利用id获取按钮组对象,然后给他们添加专门用于单选按钮组的监听器

RadioGroup sex=(RadioGroup)findViewById(R.id.radioGroup1);
sex.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){public void onCheckedChanged(RadioGroup group,int checkedId){RadioButton r=(RadioButton)findViewById(checkedId);Toast.makeText(MainActivity.this,"您选择的是"+r.getText(),Toast.LENGTH_LONG).show();}});

其中的r.getText() 就是得到这个按钮所对应的文本内容
2、单击其他按钮时获取
单击其他按钮时获取选中项的值时,首先需要在该按钮的单击事件监听器的onClick()方法中,通过for循环语句遍历当前单选按钮组,并根据被遍历到的单选按钮的isChecked()方法判断该按钮是否被选中,当被选中时,通过单选按钮的getText()方法获取对应的值,例如,要在单击“提交”按钮时,获取ID属性为radioGroup1的单选按钮组的值,代码如下

<RadioGroup
    android:id="@+id/radioGroup1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><RadioButton
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="男"/><RadioButton
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="女"/>
</RadioGroup><Button
        android:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="提交"/>

注意要给按钮组和组外的提交按钮设置id属性
主方法中的部分代码如下

public class MainActivity extends AppCompatActivity {private RadioGroup sex;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sex=(RadioGroup)findViewById(R.id.radioGroup1);Button button=(Button)findViewById(R.id.button1);button.setOnClickListener(new View.OnClickListener(){public void onClick(View v){for(int i=0;i<sex.getChildCount();i++){RadioButton r=(RadioButton)sex.getChildAt(i);//根据索引值获取单选按钮if(r.isChecked()){Toast.makeText(MainActivity.this,"您选择的是"+r.getText(),Toast.LENGTH_LONG).show();}}}});}
}

注意这里面我们先写了这句话private RadioGroup sex; 那是因为我们一会要在事件监听器的方法中使用sex,所以我们要把sex设置成全局的类型。

如果我们要想某些按钮在初始化的时候就已经默认被选中,那么我们可以这样写

<RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="男"android:checked="true"/>

其中的android:checked="true" 就代表按钮初始就已经被选中了

true  默认被选中
false 默认不被选中

当然默认被选中的按钮我们在程序运行的时候也可以把它进行取消,这在我们生活中都有这个体验。

Android学习之单选按钮相关推荐

  1. Android学习之网上商城(下)

    前言 上一篇博客主要介绍了本次网上商城的实现过程中的一些用法,这篇博客主要就是说明每个功能模式的实现方法 Android学习之网上商城(上) Android学习之网上商城(下) 源码下载: 链接:ht ...

  2. Android学习:常用控件

    Android学习:常用控件 学习要点:掌握文本框.编辑框.按钮.单选按钮.复选框等基本控件的用法 控件是Android应用程序中用户界面的重要组成元素,正是因为Android应用程序提供了很多具有不 ...

  3. Android学习路线

    Android学习路线 第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环.  2.String和StringBuffer的使用.正则表达式.  3.面向对象的抽象,封装,继承 ...

  4. 一篇文章一张思维导图看懂Android学习最佳路线

    一篇文章一张思维导图看懂Android学习最佳路线 先上一张android开发知识点学习路线图思维导图 Android学习路线从4个阶段来对Android的学习过程做一个全面的分析:Android初级 ...

  5. Android学习系列(10)--App列表之拖拽ListView(上)

    研究了很久的拖拽ListView的实现,受益良多,特此与尔共飨.       鉴于这部分内容网上的资料少而简陋,而具体的实现过程或许对大家才有帮助,为了详尽而不失真,我们一步一步分析,分成两篇文章. ...

  6. Android学习第一书

    大家好,我是一名Facebook的工程师,同时也是<第一行代码--Android>的忠实读者. 虽然我最近几年是在国外读书和工作的,但是和很多人一样,我也非常喜欢郭霖的博客以及他写的< ...

  7. Android学习笔记21:ImageView获取网络图片

    Android平台有3种网络接口可以使用,它们分别是:java.net.*(标准java接口).org.apache(Apache接口)和android.net.*(Android网络接口).本文将使 ...

  8. 四、Android学习第四天——JAVA基础回顾(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 四.Android学习第四天--JAVA基础回顾 这才学习Android的 ...

  9. Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK

    原文:Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...

最新文章

  1. Java进阶之深入理解JVM类加载机制
  2. Oracle 11gR2 使用 RMAN duplicate from active database 复制数据库
  3. Linux文件和目录属性
  4. Android 2.2 带来全新拍照增强特性
  5. virtualenv: 未找到命令
  6. L1-078 吉老师的回归 (15 分)-PAT 团体程序设计天梯赛 GPLT
  7. MATLAB手写数字识别
  8. 开学季,别忙着给孩子训练专注力!先搞清楚孩子的专注力类型
  9. c语言解线性方程组矩阵形势,c语言解线性方程组.docx
  10. 关于Git这一篇就够了
  11. 神舟 linux背光驱动,【linux】暂时解决sis m672(神舟F4000 D9) linux驱动 宽屏分辨率的问题?...
  12. DZ60通过IIC读取LM75温度遇到问题解决方法
  13. android+设置运行内存大小,怎样增大安卓手机的虚拟运行内存RAM ,手机的ram太小....
  14. struck.unpack
  15. CHUA 返回的矢量的长度为 3,但初始条件矢量的长度为 4。CHUA 返回的矢量和初始条件矢量的元素数目必须相同。
  16. JavaScript比较运算大于小于等于
  17. HTML+CSS+JavaScript 实现图片3D展览
  18. 基于Javaweb实现的人脸识别考勤系统
  19. python 视频硬字幕提取 内嵌字幕提取工具
  20. python 因子分析_因子分析在python上的实现

热门文章

  1. (原创)如何解决matlab乱码问题
  2. [ JAVA编程 ] double类型计算精度丢失问题及解决方法
  3. 【报告分享】2021年中国互联网保险消费者洞察报告.pdf(附下载链接)
  4. 【干货】2021技术展望:开拓新局,掌握变局时代的技术先机-埃森哲.pdf(附下载链接)
  5. 【报告分享】2019-2020年企业调薪参考手册.pdf(附下载链接)
  6. 【报告分享】2019中国少儿编程行业报告.pdf(附下载链接)
  7. linux跑程序占用缓存过多释放内存echo 3 > /proc/sys/vm/drop_caches
  8. apt-get update命令卡在waiting for headers
  9. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
  10. 跨境独立站卖家如何把握关键词优化?