当前位置:   article > 正文

RadioGroup里RadioButton显示多行实现(非常简单)_c#radiogroup按钮一列显示

c#radiogroup按钮一列显示

RadioGroup显示多行实现步骤

RadioGroup里面包裹的RadioButton的特性是单选和互斥,该种需求在项目中用到的比较多。

RadioButton实现多行显示的话就失去了本来的特性。

网上多数是自定义来处理这种需求,来实现单选和互斥。

本例子使用于比较少的按钮,你只需要把以前的代码稍作修改就能实现多行显示的效果。

介绍一下原来的需求
        rb.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId) {
                    case R.id.btn1:
                    //其他操作
                        break;
                    case R.id.btn2:
                        //其他操作
                        break;
                    case R.id.btn3:
                    //其他操作
                        break;
                    case R.id.btn4:
                        //其他操作
                        break;
                    default:
                        break;
                }
            }
        });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

以上就是使用单行的时候的写法,很简单,因为其他的事情都有系统代替做,但是如果他们不是RadioButton的直接子view上面的方法就接收不到回调了,这里就需要我们自己来做一些操作,测试发现虽然RadioButton的setOnCheckedChangeListener方法没有了回调,但是RadioButton的onCheckedChanged方法是一直都有回调的,所以在改方法中进行互斥的控制。如下代码:

 @Override
 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                switch (buttonView.getId()) {
                    case R.id.btn1:
                        btn1.setChecked(true);
                        btn2.setChecked(false);
                        btn3.setChecked(false);
                        btn4.setChecked(false);
                    //其他操作
                        break;
                    case R.id.btn2:
                        btn1.setChecked(false);
                        btn2.setChecked(true);
                        btn3.setChecked(false);
                        btn4.setChecked(false);
                        //其他操作
                        break;
                    case R.id.btn3:
                        btn1.setChecked(false);
                        btn2.setChecked(false);
                        btn3.setChecked(true);
                        btn4.setChecked(false);
                    //其他操作
                        break;
                    case R.id.btn4:
                        btn1.setChecked(false);
                        btn2.setChecked(false);
                        btn3.setChecked(false);
                        btn4.setChecked(true);
                        //其他操作
                        break;
                    default:
                        break;
                }
            }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

之所以采用上面的代码,是因为这样的改动相对是比较小的,并且对原来的逻辑基本上是没有变动,风险也较小。

写在结尾

上面这种比较适合RadioGroup里面包裹的RadioButton比较少的,太多的就不太合适,代码写出来看着比较臃肿。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/822771
推荐阅读
相关标签
  

闽ICP备14008679号