android radiobutton 分组,Android 第十课——UI RadioButton
常用基础空组件
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相关推荐
- android list 分组,Android 中使用ExpandableListView 实现分组的实例
Android 中使用ExpandableListView 实现分组 一个视图显示垂直滚动两级列表中的条目.这不同于列表视图,允许两个层次,类似于QQ的好友分组.要实现这个效果的整体思路为: 1.要给 ...
- android 相册分组,Android获取相册路径
Android获取相册路径 (2015-10-14 16:14:38) 标签: android 开发 源代码 freetheory 相册路径 private void getPhotoThumbnai ...
- android 多级分组,android 二级菜单(类似QQ分组)
注意点:1)适配器BaseExpandableListAdapter 2)数据源(数组.集合都行)(重点) /** * Created by mb on 2014/11/18. * 二级菜单适配器 * ...
- Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验
Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...
- Android开发笔记(四十四)动态UI事件
常用的几个事件 动画事件 动画事件主要用于Animation控件,可监控动画开始.结束.重播等行为.相关类名与方法说明如下: 监听器类名 : AnimationListener 设置监听器的方法 : ...
- Android 第二十课 广播机制(大喇叭)----发送自定义广播(包括发送标准广播和发送有序广播)
广播分为两种类型:标准广播和有序广播 我们来看一下具体这两者的具体区别: 1.发送标准广播 我们需要先定义一个广播接收器来准备接收此广播才行,否则也是白发. 新建一个MyBroadcastReceiv ...
- Android开发笔记(八十六)几个特殊的类
接口interface interface是一些功能的集合,但它只定义了对象必须实现的成员,而不包含成员的实现代码,成员的具体代码由实现接口的类提供.Android对接口的使用场景主要有三类:事件监听 ...
- Android中的基础控件CheckBox、RadioButton、ToggleButton、SeekBar
文章目录 1 CheckBox 1.1 CheckBox介绍 2 RadioButton 2.1 RadioButton介绍 3 ToggleButton 3.1 ToggleButton介绍 4 S ...
- Android开发笔记(八十)运行状态检查
大家都知道刻舟求剑的寓言故事,说的是事物是发展变化着的,如果拘泥于原来的情况,那随着情况的改变,就不会得到预期的结果.同样,影响app运行的因素,并不只是外部环境(如硬件.系统.权限等等),还包括ap ...
最新文章
- linux交换分区的目录,linux 下的交换分区及根目录
- 系统架构师-基础到企业应用架构-企业应用架构
- css3多行超出隐藏并打点点
- 实战项目三:爬取QQ群中的人员信息
- wpf mvvm MenuItem的Command事件
- linux应用程序课程设计,linux操作系统与应用课程设计 .pdf
- python中发送带附件的邮件,python SMTP实现发送带附件电子邮件
- 加密+拜占庭将军_屡屡被提及拜占庭将军问题,究竟和比特币是什么关系?
- mysql错误归纳_MySQL错误信息总结
- 使用Go实现Socket服务端和客户端通信
- DNN硬件加速器设计2 -- Survey of DNN Development Resouces and DNN Hardware(MIT)
- linux 无线网卡 频段,Linux 网卡配置 (频段、发射功率等)
- 互联网早报|宠物行业上半年融资吸金超60亿;猿辅导、掌门教育进军素质教育赛道
- Apache运行正常,但是localhost却打不开页面
- flowable中强制结束流程
- server2008网卡驱动包_网卡工作原理详解
- php nobody,linux – 运行FastCGI / PHP-FPM(作为用户“nobody”)在PHP Sessions文件夹上设置什么权限/所有权?...
- 1.44寸TFT-LCD显示屏取模教程
- cfa英语不好的怎么学_英文不好考CFA难度大吗?
- 为WebApi项目添加注册功能:问题与解决的思维流程