Android RadioGroup多行显示效果 解决单选问题

Android RadioGroup多行显示效果 解决单选问题,第1张

概述Android RadioGroup多行显示效果 解决单选问题 导语 如下图所示,这是一个导航选择d框.进行单项选择,然后会监听回调选择的事件.问题是Android的RadioButton是一般是放在RadioGroup中进行管理的,而RadioGroup又是线性布局,即单行有效,多行无效.如图那种就需要两个RadioGroup来进行合作.那么如果进行合作呢? 分析:RadioGroup多行显示其实就是两个RadioGroup进行切换,使用RadioGroup的clearCheck()方法进行 *** 作. 但是在使用clearCheck()之前,如果RadioGr

导语

如下图所示,这是一个导航选择d框。进行单项选择,然后会监听回调选择的事件。问题是AndroID的Radiobutton是一般是放在RadioGroup中进行管理的,而RadioGroup又是线性布局,即单行有效,多行无效。如图那种就需要两个RadioGroup来进行合作。那么如果进行合作呢?


分析:RadioGroup多行显示其实就是两个RadioGroup进行切换,使用RadioGroup的clearCheck()方法进行 *** 作。

但是在使用clearCheck()之前,如果RadioGroup已经设置过监听,执行就会报StackOveflowError错误。

正确方法如下:

先调用

setonCheckedchangelistener(null)

再调用

clearCheck()然后重新setonCheckedchangelistener(checkedListener)。

案例代码

1、布局如下:

<RadioGroup      androID:ID="@+ID/rg_manhole_state_one"      androID:layout_wIDth="wrap_content"      androID:layout_height="wrap_content"      androID:layout_margintop="5dp"      androID:layout_toRightOf="@ID/tv_manhole_state"      androID:orIEntation="horizontal"      androID:paddingtop="@dimen/padding_5">      <Radiobutton       androID:ID="@+ID/rb_intact"       androID:layout_wIDth="wrap_content"       androID:layout_height="wrap_content"       androID:button="@null"       androID:drawableleft="@drawable/bg_radiobutten"       androID:drawablepadding="@dimen/padding_10"       androID:text="@string/intact"       androID:textcolor="@color/white"       androID:textSize="@dimen/small_size" />      <Radiobutton       androID:ID="@+ID/rb_lose"       androID:layout_wIDth="wrap_content"       androID:layout_height="wrap_content"       androID:layout_marginleft="30dp"       androID:button="@null"       androID:drawableleft="@drawable/bg_radiobutten"       androID:drawablepadding="@dimen/padding_10"       androID:text="@string/lose"       androID:textcolor="@color/white"       androID:textSize="@dimen/small_size" />      <Radiobutton       androID:ID="@+ID/rb_sunken"       androID:layout_wIDth="wrap_content"       androID:layout_height="wrap_content"       androID:layout_marginleft="30dp"       androID:button="@null"       androID:drawableleft="@drawable/bg_radiobutten"       androID:drawablepadding="@dimen/padding_10"       androID:text="@string/sunken"       androID:textcolor="@color/white"       androID:textSize="@dimen/small_size" />     </RadioGroup>     <RadioGroup     androID:ID="@+ID/rg_manhole_state_two"     androID:layout_wIDth="wrap_content"     androID:layout_height="wrap_content"     androID:layout_marginleft="@dimen/padding_100"     androID:layout_margintop="5dp"     androID:orIEntation="horizontal"     androID:paddingtop="@dimen/padding_5">     <Radiobutton      androID:ID="@+ID/rb_occupation"      androID:layout_wIDth="wrap_content"      androID:layout_height="wrap_content"      androID:button="@null"      androID:drawableleft="@drawable/bg_radiobutten"      androID:drawablepadding="@dimen/padding_10"      androID:text="@string/occupation"      androID:textcolor="@color/white"      androID:textSize="@dimen/small_size" />     <Radiobutton      androID:ID="@+ID/rb_damage"      androID:layout_wIDth="wrap_content"      androID:layout_height="wrap_content"      androID:layout_marginleft="30dp"      androID:button="@null"      androID:drawableleft="@drawable/bg_radiobutten"      androID:drawablepadding="@dimen/padding_10"      androID:text="@string/damage"      androID:textcolor="@color/white"      androID:textSize="@dimen/small_size" />     <Radiobutton      androID:ID="@+ID/rb_heave"      androID:layout_wIDth="wrap_content"      androID:layout_height="wrap_content"      androID:layout_marginleft="30dp"      androID:button="@null"      androID:drawableleft="@drawable/bg_radiobutten"      androID:drawablepadding="@dimen/padding_10"      androID:text="@string/heave"      androID:textcolor="@color/white"      androID:textSize="@dimen/small_size" /></RadioGroup>

2、具体 *** 作如下:

声明控件:

@InjectVIEw(R.ID.rg_manhole_state_one)RadioGroup rgManholeStateOne;@InjectVIEw(R.ID.rg_manhole_state_two)RadioGroup rgManholeStateTwo;

设置监听:

rgManholeStateOne.setonCheckedchangelistener(new OnMyManholeStateOneCheckedchangelistener());rgManholeStateTwo.setonCheckedchangelistener(new OnMyManholeStateTwoCheckedchangelistener());

实现单选:

private class OnMyManholeStateOneCheckedchangelistener implements RadioGroup.OnCheckedchangelistener {  @OverrIDe  public voID onCheckedChanged(RadioGroup radioGroup,int position) {   switch (position) {    case R.ID.rb_intact:     if (rbIntact.isChecked())      rgManholeStateTwo.clearCheck();     break;    case R.ID.rb_lose:     if (rbLose.isChecked())      rgManholeStateTwo.clearCheck();     break;    case R.ID.rb_sunken:     if (rbSunken.isChecked())      rgManholeStateTwo.clearCheck();     break;   }  } } private class OnMyManholeStateTwoCheckedchangelistener implements RadioGroup.OnCheckedchangelistener {  @OverrIDe  public voID onCheckedChanged(RadioGroup radioGroup,int position) {   switch (position) {    case R.ID.rb_occupation:     if (rbOccupation.isChecked())      rgManholeStateOne.clearCheck();     break;    case R.ID.rb_damage:     if (rbdamage.isChecked())      rgManholeStateOne.clearCheck();     break;    case R.ID.rb_heave:     if (rbHeave.isChecked())      rgManholeStateOne.clearCheck();     break;   }  } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

@H_301_55@ 总结

以上是内存溢出为你收集整理的Android RadioGroup多行显示效果 解决单选问题全部内容,希望文章能够帮你解决Android RadioGroup多行显示效果 解决单选问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1144316.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存