简单解决Android RadioButton布局问题(多个RadioGroup之间的互斥)

在Android开发中,需要实现多行多列的RadioButton布局,网上看了一些其他方法,有说重写RadioGroup类的,也有实例化多个RadioButton的,感觉都有点麻烦。这里总结一种简单的通过clearCheck()方法实现的方式。

  1. 首先,按列(或行)组织RadioButton,对每列(或行)定义一个RadioGroup。比如这里的RadioButton排成了两列,则定义两个RadioGroup,group1和group2。
    简单解决Android RadioButton布局问题(多个RadioGroup之间的互斥)_第1张图片
  2. 定义一个布尔类型变量checked,初始化为false。
  3. 在重写的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的多行多列布局,足以应对多数情况了,一些布局或者逻辑更复杂的实现还是找找别的方法吧。

你可能感兴趣的:(Android)