常用基础空组件

5 RadioGroup RadioButton

单选按钮时常用组件之一,但是开发过程中虽然很多地方会用到单选按钮,但是却不会用Android系统提供的原始样式,类似我们在写html时,不同的浏览器提供的单选按钮是不一样的,兼容性也很差,一般用图片替代伪装。但是无论如何伪装样式,单选按钮的功能都是一样的。下面就用一个 加减乘除 运算器来讲解单选按钮的功能,至于样式以后提供。

layout中组件:

android:id="@+id/operation"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

>

android:id="@+id/addition"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:checked="true"

android:text="@string/addition"/>

android:id="@+id/subtraction"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/subtraction"/>

Activity中组件:

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 获取RadioGroup

radioGroup = (RadioGroup)this.findViewById(R.id.operation);

// 为RadioGroup注册事件监听(当单选按钮被选中时这个类的onCheckedChanged方法被触发)

radioGroup.setOnCheckedChangeListener(new MainActivity.RadioGroupDefineImpl());

}

// Activity内部类,实现OnCheckedChangeListener接口同时实现onCheckedChanged方法

class RadioGroupDefineImpl implements OnCheckedChangeListener{

@Override

public void onCheckedChanged(RadioGroup group, int id) {

// TODO Auto-generated method stub

// group就是被选中那个Radio所属的组RadioGroup对象,id则是被选中那个Radio的id,所以通过如下方式可以获取RadioButton,也可以通过radioGroup.getCheckedRadioButtonId()获取id

RadioButton radio = (RadioButton)MainActivity.this.findViewById(id);

Toast.makeText(MainActivity.this, radio.getText(), Toast.LENGTH_SHORT).show();

}

}

注意:

1)单选按钮RadioButton不能单独存在,他必须有明确的分组RadioGroup,即每一个RadioButton都应该是RadioGroup的子组件。

2)给每一个RadioGroup和RadioButton注册一个ID,便于java程序中获取

3)checked="true" 表示按钮默认被选中,使用单选按钮时最好有一个默认选中的选项,否则你干嘛不使用多选按钮呢?

4)在java程序Activity的onCreate方法中我们只需获取RadioGroup,然后为RadioGroup注册事件监听,这个事件监听是一个 OnCheckedChangeListener 的实例对象,同时我们要实现onCheckedChanged方法。在监听器中我们可以通过参数获取哪个RadioButton被选中。这是与Button或CheckBox最大的区别,他们都是对单独的按钮注册事件监听。也可以通过radioGroup.getCheckedRadioButtonId()获取被选中的RadioButton的id。

5)当我们在java程序中具体判断按个单选按钮被选中时,一般使用ID如下判断:

int operation = radioGroup.getCheckedRadioButtonId()

switch(operation){

case R.id.subtraction:

// coding

break;

}

下面是一个使用RadioButton做的加减乘除运算器:

layout.xml

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

>

android:id="@+id/param1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/defalut0"

android:inputType="number"

/>

android:id="@+id/operation"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

>

android:id="@+id/addition"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:checked="true"

android:text="@string/addition"/>

android:id="@+id/subtraction"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/subtraction"/>

android:id="@+id/multiplication"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/multiplication"/>

android:id="@+id/division"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/division"/>

android:id="@+id/param2"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:inputType="number"

android:text="@string/defalut0"/>

android:id="@+id/mainActivity_btn"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/mainActivity_result"

/>

android:layout_width="match_parent"

android:layout_height="match_parent"

android:text="@string/defalut0"/>

java Activity:

package com.hnust.moon;

import android.os.Bundle;

import android.support.v7.app.ActionBarActivity;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.RadioButton;

import android.widget.RadioGroup;

import android.widget.RadioGroup.OnCheckedChangeListener;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends ActionBarActivity {

private static final String TAG = MainActivity.class.getSimpleName();

private RadioGroup radioGroup;

private Button btn;

private EditText param1;

private EditText param2;

private TextView rsv;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

param1 = (EditText)MainActivity.this.findViewById(R.id.param1);

param2 = (EditText)MainActivity.this.findViewById(R.id.param2);

rsv = (TextView)MainActivity.this.findViewById(R.id.result);

btn = (Button)this.findViewById(R.id.mainActivity_btn);

btn.setOnClickListener(new MainActivity.ButtonDefineImpl());

radioGroup = (RadioGroup)this.findViewById(R.id.operation);

radioGroup.setOnCheckedChangeListener(new MainActivity.RadioGroupDefineImpl());

}

class RadioGroupDefineImpl implements OnCheckedChangeListener{

@Override

public void onCheckedChanged(RadioGroup group, int id) {

// TODO Auto-generated method stub

RadioButton radio = (RadioButton)MainActivity.this.findViewById(id);

Toast.makeText(MainActivity.this, radio.getText(), Toast.LENGTH_SHORT).show();

}

}

/**

*

* @author heweipo

*

*/

class ButtonDefineImpl implements OnClickListener{

@Override

public void onClick(View view) {

// TODO Auto-generated method stub

int operation = radioGroup.getCheckedRadioButtonId();

rsv.setText(calcurateResult(operation, Integer.parseInt(param1.getText().toString()), Integer.parseInt(param2.getText().toString()))+"");

}

}

private int calcurateResult(int operation , int param1 , int param2){

int result = 0;

switch(operation){

case R.id.subtraction:

result = param1 - param2;

break;

case R.id.multiplication:

result = param1 * param2;

break;

case R.id.division:

if(param2 == 0){Toast.makeText(this, "除数不能为0", Toast.LENGTH_SHORT).show();break;}

result = param1 / param2;

break;

default:

result = param1 + param2;

break;

}

return result;

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

menu.add(0, 8080, 1, R.string.exit);

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();

switch (id) {

case R.id.action_settings:

break;

case R.id.menu_addition:

radioGroup.check(R.id.addition);

rsv.setText(calcurateResult(R.id.addition, Integer.parseInt(param1.getText().toString()), Integer.parseInt(param2.getText().toString()))+"");

break;

case R.id.menu_subtraction:

radioGroup.check(R.id.subtraction);

rsv.setText(calcurateResult(R.id.subtraction, Integer.parseInt(param1.getText().toString()), Integer.parseInt(param2.getText().toString()))+"");

break;

case R.id.menu_multiplication:

radioGroup.check(R.id.multiplication);

rsv.setText(calcurateResult(R.id.multiplication, Integer.parseInt(param1.getText().toString()), Integer.parseInt(param2.getText().toString()))+"");

break;

case R.id.menu_division:

radioGroup.check(R.id.division);

rsv.setText(calcurateResult(R.id.division, Integer.parseInt(param1.getText().toString()), Integer.parseInt(param2.getText().toString()))+"");

break;

case 8080:

finish();

break;

}

return super.onOptionsItemSelected(item);

}

}

图片:

android radiobutton 分组,Android 第十课——UI RadioButton相关推荐

  1. android list 分组,Android 中使用ExpandableListView 实现分组的实例

    Android 中使用ExpandableListView 实现分组 一个视图显示垂直滚动两级列表中的条目.这不同于列表视图,允许两个层次,类似于QQ的好友分组.要实现这个效果的整体思路为: 1.要给 ...

  2. android 相册分组,Android获取相册路径

    Android获取相册路径 (2015-10-14 16:14:38) 标签: android 开发 源代码 freetheory 相册路径 private void getPhotoThumbnai ...

  3. android 多级分组,android 二级菜单(类似QQ分组)

    注意点:1)适配器BaseExpandableListAdapter 2)数据源(数组.集合都行)(重点) /** * Created by mb on 2014/11/18. * 二级菜单适配器 * ...

  4. Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验

    Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...

  5. Android开发笔记(四十四)动态UI事件

    常用的几个事件 动画事件 动画事件主要用于Animation控件,可监控动画开始.结束.重播等行为.相关类名与方法说明如下: 监听器类名 : AnimationListener 设置监听器的方法 : ...

  6. Android 第二十课 广播机制(大喇叭)----发送自定义广播(包括发送标准广播和发送有序广播)

    广播分为两种类型:标准广播和有序广播 我们来看一下具体这两者的具体区别: 1.发送标准广播 我们需要先定义一个广播接收器来准备接收此广播才行,否则也是白发. 新建一个MyBroadcastReceiv ...

  7. Android开发笔记(八十六)几个特殊的类

    接口interface interface是一些功能的集合,但它只定义了对象必须实现的成员,而不包含成员的实现代码,成员的具体代码由实现接口的类提供.Android对接口的使用场景主要有三类:事件监听 ...

  8. Android中的基础控件CheckBox、RadioButton、ToggleButton、SeekBar

    文章目录 1 CheckBox 1.1 CheckBox介绍 2 RadioButton 2.1 RadioButton介绍 3 ToggleButton 3.1 ToggleButton介绍 4 S ...

  9. Android开发笔记(八十)运行状态检查

    大家都知道刻舟求剑的寓言故事,说的是事物是发展变化着的,如果拘泥于原来的情况,那随着情况的改变,就不会得到预期的结果.同样,影响app运行的因素,并不只是外部环境(如硬件.系统.权限等等),还包括ap ...

最新文章

  1. linux交换分区的目录,linux 下的交换分区及根目录
  2. 系统架构师-基础到企业应用架构-企业应用架构
  3. css3多行超出隐藏并打点点
  4. 实战项目三:爬取QQ群中的人员信息
  5. wpf mvvm MenuItem的Command事件
  6. linux应用程序课程设计,linux操作系统与应用课程设计 .pdf
  7. python中发送带附件的邮件,python SMTP实现发送带附件电子邮件
  8. 加密+拜占庭将军_屡屡被提及拜占庭将军问题,究竟和比特币是什么关系?
  9. mysql错误归纳_MySQL错误信息总结
  10. 使用Go实现Socket服务端和客户端通信
  11. DNN硬件加速器设计2 -- Survey of DNN Development Resouces and DNN Hardware(MIT)
  12. linux 无线网卡 频段,Linux 网卡配置 (频段、发射功率等)
  13. 互联网早报|宠物行业上半年融资吸金超60亿;猿辅导、掌门教育进军素质教育赛道
  14. Apache运行正常,但是localhost却打不开页面
  15. flowable中强制结束流程
  16. server2008网卡驱动包_网卡工作原理详解
  17. php nobody,linux – 运行FastCGI / PHP-FPM(作为用户“nobody”)在PHP Sessions文件夹上设置什么权限/所有权?...
  18. 1.44寸TFT-LCD显示屏取模教程
  19. cfa英语不好的怎么学_英文不好考CFA难度大吗?
  20. 为WebApi项目添加注册功能:问题与解决的思维流程

热门文章

  1. 摄像头ISP系统原理(下)
  2. 【C语言】一些简单编译错误或警告
  3. python 取list 里面最大的数或者最小数
  4. 微信小程序地图上图片放到下面
  5. LocationDemo has leaked ServiceConnection 异常并且无法定位的时候
  6. 【USACO06JAN POJ3179】Corral the Cows
  7. 中国互联网+光伏建筑一体化行业商业模式创新与投资机会深度报告
  8. 使用 Sticky-Kit 实现基于 jQuery 的元素固定效果
  9. C#条件判断-根据条件判断要走的路-if结构
  10. 敏捷宣言遵循的十二条原则