在Android开发中,需要实现多行多列的RadioButton布局,网上看了一些其他方法,有说重写RadioGroup类的,也有实例化多个RadioButton的,感觉都有点麻烦。这里总结一种简单的通过clearCheck()方法实现的方式。
- 首先,按列(或行)组织RadioButton,对每列(或行)定义一个RadioGroup。比如这里的RadioButton排成了两列,则定义两个RadioGroup,group1和group2。
- 定义一个布尔类型变量checked,初始化为false。
- 在重写的RadioGroup.OnCheckedChangeListener的onCheckedChanged(RadioGroup group, int checkedId)方法中,加上几行:
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checked) return;
if (group.getId() == R.id.group_1) {
checked = true;
group2.clearCheck();
// 这里可以加更多的group的clearCheck操作
checked = false;
} else if (group.getId() == R.id.group_2) {
checked = true;
group1.clearCheck();
// 这里可以加更多的group的clearCheck操作
checked = false;
} // 这里可以加更多的group的判断
// 下面接正常的操作即可
// ......
}
这里用checked标记主要是因为在调用RadioGroup的clearCheck()方法时会触发onCheckedChanged(RadioGroup group, int checkedId)的回调。
通过这种方式即可简单地实现RadioButton的多行多列布局,足以应对多数情况了,一些布局或者逻辑更复杂的实现还是找找别的方法吧。