如何在Android中显示多行的单选按钮

时间:2011-03-12 18:03:02

标签: android

我需要在2行中显示4个相同Radiogroup的RadioButtons。

第一个包含2个单选按钮,下一行包含2个单选按钮。我们如何使用RadioGroup在Android中实现这一目标。任何人都可以提供此问题的示例代码吗?

2 个答案:

答案 0 :(得分:0)

RadioGroup扩展了LinearLayout。我想,那么两行是不可能的 创建包装RadioGroups组并实现/委托检查/取消选中和事件监听器的包装器。

答案 1 :(得分:0)

事实上它有可能......至少部分!

您需要做的是创建一个RelativeLayout,它将在您的RadioGroupRadioButton之间形成。然后,对于每个RadioButton,请提供RelativeLayout规则来选择位置,如下所示:

RadioGroup fromRadioGroup = new RadioGroup(this);
    RelativeLayout fromChoice = new RelativeLayout(this);
        RadioButton fromNow = new RadioButton(this);
        fromNow.setText(R.string.Now);
        fromNow.setId(1000);
    fromChoice.addView(fromNow);
        RadioButton fromTomo = new RadioButton(this);
        fromTomo.setText(R.string.Tomorrow);
        RelativeLayout.LayoutParams relParams1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        relParams1.addRule(RelativeLayout.RIGHT_OF, 1000);
        fromTomo.setLayoutParams(relParams1);
    fromChoice.addView(fromTomo);
        RadioButton fromNextW = new RadioButton(this);
        fromNextW.setText(R.string.NextWeek);
        fromNextW.setId(100100);
        RelativeLayout.LayoutParams relParams2 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        relParams2.addRule(RelativeLayout.BELOW, 1000);
        fromNextW.setLayoutParams(relParams2);
    fromChoice.addView(fromNextW);
        RadioButton fromNextM = new RadioButton(this);
        fromNextM.setText(R.string.NextMonth);
        fromNextM.setId(100200);
        RelativeLayout.LayoutParams relParams3 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        relParams3.addRule(RelativeLayout.BELOW, 1000);
        relParams3.addRule(RelativeLayout.RIGHT_OF, 100100);
        fromNextM.setLayoutParams(relParams3);
    fromChoice.addView(fromNextM);
fromRadioGroup.addView(fromChoice);

现在,RadioButton显示在两行上,但它们不再作为同一RadioGroup的一部分做出反应...基本上,我可以从同一个中选择一个以上的无线电小组,当看fromRadioGroup.getCheckedRadioButtonId()返回什么时,(-1),它显然没有考虑任何RadioButton作为孩子......女巫把我们带到了几乎无用的解决方案。或者也许有办法迫使孩子们回到RadioGroup,但我还没有发现任何东西 欢呼声。