1. 程式人生 > >RadioGroup裡RadioButton顯示多行實現(非常簡單)

RadioGroup裡RadioButton顯示多行實現(非常簡單)

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; } } });

以上就是使用單行的時候的寫法,很簡單,因為其他的事情都有系統代替做,但是如果他們不是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;
                }
            }

之所以採用上面的程式碼,是因為這樣的改動相對是比較小的,並且對原來的邏輯基本上是沒有變動,風險也較小。

寫在結尾

上面這種比較適合RadioGroup裡面包裹的RadioButton比較少的,太多的就不太合適,程式碼寫出來看著比較臃腫。