RadioGroup 有两列有十个 RadioButtons

RadioGroup with two columns which have ten RadioButtons(RadioGroup 有两列有十个 RadioButtons)

本文介绍了RadioGroup 有两列有十个 RadioButtons的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 RadioGroup,我想在两列五行中将按钮彼此相邻对齐,但我无法实现.我尝试过的事情:

I have a RadioGroup and I want to align buttons next to each other in two columns and five rows and I am unable to achieve it. Things I have tried:

  1. RelativeLayout -> RadioGroup 外部 -> RadioGroup 内部.所有 RadioButtons 都被选中,但我只想选中一个.
  2. RadioGroup:方向
  3. 跨度、拉伸列
  4. 表格行
  5. 表格布局
  1. RelativeLayout -> Outside RadioGroup -> Inside RadioGroup. All RadioButtons are selected, but I want only one to be selected.
  2. RadioGroup : orientation
  3. Span, stretchcolumns
  4. TableRow
  5. TableLayout

请告诉我如何创建一个 RadioGroup 并在其中包含两列和许多 RadioButtons.

Please let me know how create one RadioGroup and have two columns and many RadioButtons within.

推荐答案

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

You can simulate that RadioGroup to make it look like you have only one. For example you have rg1 and rg2(RadioGroups with orientation set to vertical(the two columns)). To setup those 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);

要在这些 RadioGroups 中仅选择一个 RadioButton,上面的侦听器将是:

To select only one RadioButton in those RadioGroups the listeners above will be:

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");
            }
        }
    };

要从 RadioGroups 中获取选中的 RadioButton,您可以这样做:

To get the checked RadioButton from the RadioGroups you could do:

int chkId1 = rg1.getCheckedRadioButtonId();
int chkId2 = rg2.getCheckedRadioButtonId();
int realCheck = chkId1 == -1 ? chkId2 : chkId1;

如果你使用 RadioGroupcheck() 方法,你必须记住在另一个 上调用 clearCheck()无线电组.

If you use the check() method of the RadioGroup you have to remember to call clearCheck() on the other Radiogroup.

这篇关于RadioGroup 有两列有十个 RadioButtons的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:RadioGroup 有两列有十个 RadioButtons

基础教程推荐