我有一个 RadioGroup
,我想在两列五行中将按钮彼此相邻对齐,但我无法实现。我尝试过的事情:
RelativeLayout
->RadioGroup
外部 ->RadioGroup
内部。 所有RadioButtons
都被选中,但我只想选中一个。RadioGroup
:方向- 跨度、拉伸(stretch)列
表格行
表格布局
请告诉我如何创建一个 RadioGroup
并在其中包含两列和许多 RadioButtons
。
最佳答案
您可以模拟该 RadioGroup
以使其看起来只有一个。例如,您有 rg1
和 rg2
(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);
要在这些 RadioGroups
中仅选择一个 RadioButton
,上面的监听器将是:
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
,您可以这样做:
int chkId1 = rg1.getCheckedRadioButtonId();
int chkId2 = rg2.getCheckedRadioButtonId();
int realCheck = chkId1 == -1 ? chkId2 : chkId1;
如果你使用 RadioGroup
的 check()
方法,你必须记住在另一个 上调用
.clearCheck()
radio 组
关于android - RadioGroup 有两列有十个 RadioButtons,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10425569/