现有5个单选按钮,水平放置的话一排有点拥挤,我打算分两排显示,第一排三个,第二排两个,于是我在RadioGroup中加入了两个先行布局,但是加好后发现这几个单选按钮不是一组了,每个都可以被选中,请问有什么解决办法吗,或者能采用什么方法让单选按钮自动换行吗?

解决方案 »

  1.   

    "RadioButtons have to be direct children of RadioGroup",见这儿这儿的讨论。用多个RadioGroup,然后自己把它们连起来,像这样
      

  2.   

    多谢,问题解决了,真不明白google设计的时候为什么运行在group中加其他布局,真难用
      

  3.   

    关于楼上无法单选的问题,其实里面也已经有解决方案了。private OnCheckedChangeListener mOnCheckedChangeListener = new OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
    if(group==rg_skin_content1){
    rg_skin_content2.clearCheck();
    }else if(group==rg_skin_content2){
    rg_skin_content1.clearCheck();
    }

    }
    };
      

  4.   

    不好意思~没有仔细看完,这个才可以解决private OnCheckedChangeListener mOnCheckedChangeListener = new OnCheckedChangeListener() { @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
    if (group != null) {
    if (group == rg_skin_content1) {
    if(checkedId==R.id.rb_appearance_1||checkedId==R.id.rb_appearance_2||checkedId==R.id.rb_appearance_3||checkedId==R.id.rb_appearance_4){

    rg_skin_content2.clearCheck();
    group.check(checkedId);
    }
    } else if (group == rg_skin_content2) {
    if(checkedId==R.id.rb_appearance_5||checkedId==R.id.rb_appearance_6||checkedId==R.id.rb_appearance_7||checkedId==R.id.rb_appearance_8){

    rg_skin_content1.clearCheck();
    group.check(checkedId);
    }
    }

    }
    }
    };
      

  5.   

    根本不可行,
    你调用clearCheck 
    就会导致再次导致调用OnCheckedChangeListener
    然后再次调用,循环调用。
    必须出错。
      

  6.   

    Quote: 引用 8 楼 generalx 的回复:

    的确会出现死循环,但是RadioGroup里的RadioButton的选中值是正常的,要避免的话还是在要加一个标识
    private Boolean changeGroup = false;
    public void onCheckedChanged(RadioGroup group, int checkedId){
      if (group != null && checkedId > -1 && changeGroup == false){
        if(group == frequencyGroup1){
          changeGroup = true;
          frequencyGroup2.clearCheck();
          frequencyGroup3.clearCheck();
          changeGroup = false;
        }else if(group == frequencyGroup2){
          changeGroup = true;
          frequencyGroup1.clearCheck();
          frequencyGroup3.clearCheck();
          changeGroup = false;
        }else if(group == frequencyGroup3){
          changeGroup = true;
          frequencyGroup1.clearCheck();
          frequencyGroup2.clearCheck();
          changeGroup = false;
        }
      }
    }
      

  7.   


    玩过单片机中断的应该都知道吧,进去先把OnCheckedChangeListener
    设置为NULL, 等操作完了 再设置回来就好了