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

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

  1. 首先,按列(或行)组织RadioButton,对每列(或行)定义一个RadioGroup。比如这里的RadioButton排成了两列,则定义两个RadioGroup,group1和group2。
    在这里插入图片描述
  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的多行多列布局,足以应对多数情况了,一些布局或者逻辑更复杂的实现还是找找别的方法吧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值