Radiobutton是一种单选按钮,是由于RadioGroup管理下的一组按钮,所以一旦其中的一个button选中,再点击,就不能取消,想要取消调用Radiobutton的setchecked(boolean isChecked)的方法。
但是连续点击当前的radiobutton的话,只能选中一次和取消选中一次,不能再点击了,因为当把当前的radiobutton取消点击后,其radiogroup的checklistener事件已经响应,所以如果还点击当前的button,group的check事件已经checked,不能再点击了,所以当点击同一个的radiobutton时,当点击取消了,就要调用group的clearcheck()方法,就可以再连续单击该radiobutton了。下面是简单的对radiobutton的点击状态进行的切换代码(kotlin写法,如果用普通的android转换下即可):
radioButton.setOnClickListener {
//表示连续点击的不是同一个radioButton,则不同的radioButton的初始状态都是false
if(mRadioButton != radioButton && mRadioButton.text.isNotEmpty()){
isChecked = false
}
checkedList.clear()//项目中使用的而已,可删除
radioButton.isChecked = !isChecked//点击button后赋予的点击状态
if (radioButton.isChecked) {//选中
checkedList.add(radioButton.text.toString())
}else{//取消选中
if(mRadioButton == radioButton){//同一个radiobButton要取消radioGroup的check事件,才可连续点击
group.clearCheck()//取消radioGroup的check的监听
}
}
isChecked = radioButton.isChecked//赋予isChecked为目前radioButton的状态
mRadioButton = radioButton//使mRadioButton为当前点击的radioButton
}
其中,isChecked是全局的变量,初始值赋为false,mRadioButton也是全局变量,很简单的写法。