我需要在2行中显示4个相同Radiogroup的RadioButtons。
第一个包含2个单选按钮,下一行包含2个单选按钮。我们如何使用RadioGroup在Android中实现这一目标。任何人都可以提供此问题的示例代码吗?
答案 0 :(得分:0)
RadioGroup扩展了LinearLayout。我想,那么两行是不可能的 创建包装RadioGroups组并实现/委托检查/取消选中和事件监听器的包装器。
答案 1 :(得分:0)
事实上它有可能......至少部分!
您需要做的是创建一个RelativeLayout
,它将在您的RadioGroup
和RadioButton
之间形成。然后,对于每个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
,但我还没有发现任何东西
欢呼声。