Jas*_*ood 28 android radio-group radio-button
我有一个RadioGroup,我想将两个列和五行中的按钮对齐,我无法实现它.我尝试过的事情:
RelativeLayout- >外RadioGroup- >里面RadioGroup.所有RadioButtons都被选中,但我只想选择一个.RadioGroup :方向TableRowTableLayout请让我知道如何创建一个RadioGroup并且有两列和多列RadioButtons.
Luk*_*rog 47
你可以模拟它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);
Run Code Online (Sandbox Code Playgroud)
要RadioButton在RadioGroups上面的监听器中只选择一个:
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)
为了得到检查RadioButton从RadioGroups你可以这样做:
int chkId1 = rg1.getCheckedRadioButtonId();
int chkId2 = rg2.getCheckedRadioButtonId();
int realCheck = chkId1 == -1 ? chkId2 : chkId1;
Run Code Online (Sandbox Code Playgroud)
如果你使用你必须记住的check()方法,另一方面.RadioGroupclearCheck()Radiogroup
RadioGroup从LinearLayout扩展而来.
linearlayout不能这样做,所以RadioGroup不能这样做.
为什么不自己实现它.
使用RelativeLayout布局子视图.并记录子视图的状态.使用setLevel来控制状态.
祝你好运!.
| 归档时间: |
|
| 查看次数: |
26875 次 |
| 最近记录: |