RadioGroup 自身是线性布局,也就是说,所有的RadioButton 都是排一排,横或竖
每个RadioGroup自身的btn 会互斥,当要实现多排布局,正常会在一个RadioGroup内 加入线性布局,实现多排btn,
但是这样就不能全局互斥,实现不了,
那么如果是要实现多排布局,而且全局互斥,怎么实现?
这几天做项目,找到简单的解决办法:
(因为我是做前端的,所以用前端的思路来写)
思路:
使用多个RadioGroup来布局,每个RadioGroup内部btn 互斥,排版也能按照理想的来,最后只需要解决 多个RadioGroup的互斥;
RadioGroup1,RadioGroup2,RadioGroup3,如果点击的是RadioGroup1 内部的btn,就清空RadioGroup2,RadioGroup3内部所有的btn的checked状态,反之亦然;
代码:
isChecked = false; mRadioGroup3 = (RadioGroup)findViewById(R.id.main_radiogroup3); mRadioGroup2 = (RadioGroup)findViewById(R.id.main_radiogroup2); mRadioGroup1 = (RadioGroup)findViewById(R.id.main_radiogroup1); mRadioGroup1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if (isChecked) return; if (group.getId() == R.id.main_radiogroup1) { isChecked = true; mRadioGroup2.clearCheck(); mRadioGroup3.clearCheck(); isChecked = false; groupCheckedOneId = checkedId; // 保存当前选中的btn的 id } } });