RadioGroup有两列,有十个RadioButtons

Jas*_*ood 28 android radio-group radio-button

我有一个RadioGroup,我想将两个列和五行中的按钮对齐,我无法实现它.我尝试过的事情:

  1. RelativeLayout- >外RadioGroup- >里面RadioGroup.所有RadioButtons都被选中,但我只想选择一个.
  2. RadioGroup :方向
  3. Span,stretchcolumns
  4. TableRow
  5. TableLayout

请让我知道如何创建一个RadioGroup并且有两列和多列RadioButtons.

Luk*_*rog 47

你可以模拟它RadioGroup,使它看起来像你只有一个.例如,你有rg1rg2(RadioGroups方向设置为vertical(两列)).设置这些RadioGroups:

rg1 = (RadioGroup) findViewById(R.id.radioGroup1);
rg2 = (RadioGroup) findViewById(R.id.radioGroup2);
rg1.clearCheck(); // this is so we can start fresh, with no selection on both RadioGroups
rg2.clearCheck();
rg1.setOnCheckedChangeListener(listener1);
rg2.setOnCheckedChangeListener(listener2);
Run Code Online (Sandbox Code Playgroud)

RadioButtonRadioGroups上面的监听器中只选择一个:

private OnCheckedChangeListener listener1 = new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            if (checkedId != -1) {
                rg2.setOnCheckedChangeListener(null); // remove the listener before clearing so we don't throw that stackoverflow exception(like Vladimir Volodin pointed out)
                rg2.clearCheck(); // clear the second RadioGroup!
                rg2.setOnCheckedChangeListener(listener2); //reset the listener
                Log.e("XXX2", "do the work");
            }
        }
    };

    private OnCheckedChangeListener listener2 = new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            if (checkedId != -1) {
                rg1.setOnCheckedChangeListener(null);
                rg1.clearCheck();
                rg1.setOnCheckedChangeListener(listener1);
                Log.e("XXX2", "do the work");
            }
        }
    };
Run Code Online (Sandbox Code Playgroud)

为了得到检查RadioButtonRadioGroups你可以这样做:

int chkId1 = rg1.getCheckedRadioButtonId();
int chkId2 = rg2.getCheckedRadioButtonId();
int realCheck = chkId1 == -1 ? chkId2 : chkId1;
Run Code Online (Sandbox Code Playgroud)

如果你使用你必须记住的check()方法,另一方面.RadioGroupclearCheck()Radiogroup

  • 荒谬的是,我们必须经历所有这一切,因此我们可以拥有2列以上的无线电按钮. (12认同)

Cha*_*Yao 6

RadioGroup从LinearLayout扩展而来.

linearlayout不能这样做,所以RadioGroup不能这样做.

为什么不自己实现它.

使用RelativeLayout布局子视图.并记录子视图的状态.使用setLevel来控制状态.

祝你好运!.