RadioGroup实现单选框的多行排列
RadioGroup的使用非常简单,只是一般情况下,只能是横向排列或竖向排列.如果让多横排列的的就不是那么简单的了。
也许有童鞋该说了,将RadioButton写到LineLayout中不久行了吗?经过检验确实可以那样做,刚开始我也是这样做到.不过运行起来发现了了一个bug---单选按钮不在是单选了.而且选择事件不会被监听到.这就要求我们去想办法了.其实实现起来也不难.只要多用几个RadioGroup就可以了(要在代码中处理一些事件)。
上代码:
1.xml中的布局:
这样就实现了多行布局,这只是我布局中的一部分,其中android:textSize=”@dimen/RB_text_size”为自己定义的字体大小.
2.activity中的使用以及处理:
publicclassSelectMoneyActivityextendsBaseActivity{
StringstrBtnSelected="";//记录选择的是哪个选项
privateRadioGrouprg1,rg2,rg3,rg4;
privateRadioButtonrb_1,rb_2,rb_3,rb_4,rb_5,rb_6,rb_7,rb_8,rb_9,rb_10;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_money);
initView();
}
privatevoidinitView(){
rg1=(RadioGroup)findViewById(R.id.radio1);
rg2=(RadioGroup)findViewById(R.id.radio2);
rg3=(RadioGroup)findViewById(R.id.radio3);
rg4=(RadioGroup)findViewById(R.id.radio4);
rb_1=(RadioButton)findViewById(R.id.rb_1);
rb_2=(RadioButton)findViewById(R.id.rb_2);
rb_3=(RadioButton)findViewById(R.id.rb_3);
rb_4=(RadioButton)findViewById(R.id.rb_4);
rb_5=(RadioButton)findViewById(R.id.rb_5);
rb_6=(RadioButton)findViewById(R.id.rb_6);
rb_7=(RadioButton)findViewById(R.id.rb_7);
rb_8=(RadioButton)findViewById(R.id.rb_8);
rb_9=(RadioButton)findViewById(R.id.rb_9);
rb_10=(RadioButton)findViewById(R.id.rb_10);
btn_back=(Button)findViewById(R.id.btn_back);
btn_next=(Button)findViewById(R.id.btn_next);
//创建监听器,为每个RadioButton注册监听
BtnSelectedbtnSelected1=newBtnSelected("1");
BtnSelectedbtnSelected2=newBtnSelected("2");
BtnSelectedbtnSelected3=newBtnSelected("3");
BtnSelectedbtnSelected4=newBtnSelected("4");
BtnSelectedbtnSelected5=newBtnSelected("5");
BtnSelectedbtnSelected6=newBtnSelected("6");
BtnSelectedbtnSelected7=newBtnSelected("7");
BtnSelectedbtnSelected8=newBtnSelected("8");
BtnSelectedbtnSelected9=newBtnSelected("9");
BtnSelectedbtnSelected10=newBtnSelected("10");
rb_1.setOnClickListener(btnSelected1);
rb_2.setOnClickListener(btnSelected2);
rb_3.setOnClickListener(btnSelected3);
rb_4.setOnClickListener(btnSelected4);
rb_5.setOnClickListener(btnSelected5);
rb_6.setOnClickListener(btnSelected6);
rb_7.setOnClickListener(btnSelected7);
rb_8.setOnClickListener(btnSelected8);
rb_9.setOnClickListener(btnSelected9);
rb_10.setOnClickListener(btnSelected10);
//点击事件的监听器
publicclassBtnSelectedimplementsView.OnClickListener{
privateStringbtnId;
publicBtnSelected(Stringstr){
btnId=str;
}
@Override
publicvoidonClick(Viewv){
strBtnSelected=btnId;//选择的某一项
isSelect=true;
//点击了第一行,就把另外行的点击项清空
if(btnId.equals("1")||btnId.equals("2")||btnId.equals("3")){
rg2.clearCheck();
rg3.clearCheck();
rg4.clearCheck();
}elseif(btnId.equals("4")||btnId.equals("5")||btnId.equals("6")){
rg1.clearCheck();
rg3.clearCheck();
rg4.clearCheck();
}elseif(btnId.equals("7")||btnId.equals("8")||btnId.equals("9")){
rg1.clearCheck();
rg2.clearCheck();
rg4.clearCheck();
}else{
rg1.clearCheck();
rg2.clearCheck();
rg3.clearCheck();
}
}
}
}
已经搞定.还有一种方法就是自定义RadioGroup实现,不过这种有点复杂.我还是下班回家了.
补充:
使用RadioGroup.setcheck(RadioButton的id)初始化默认选中A按钮,但是监听不会执行的问题
解决:因为已经给A按钮在布局中设置了check=”true”;将这个属性去掉就会执行监听了.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。