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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。