RadioGroup裡RadioButton顯示多行實現(非常簡單)
阿新 • • 發佈:2019-01-04
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比較少的,太多的就不太合適,程式碼寫出來看著比較臃腫。