最近做开发用到了RadioButton, 并自定义了样式,把RadioButton的按钮去掉了,换成了自定义的点击效果,这时候点击看不见是否被选中的效果。于是问题来了,第一次点击没问题,第二次以后点击就失效了。
布局是这样的:
<RadioButton android:id="@+id/radiobtn" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@null" android:button="@null" android:drawableTop="@drawable/radiobt_selector" android:gravity="center" android:text="@string/rbtn_text" android:textColor="@color/white" android:textSize="@dimen/24sp"/>
实现点击事件是这样的:
private RadioGroup.OnCheckedChangeListener mOnCheckedChangeListener = new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) { switch (checkedId) { case R.id.radiobtn: Log.e(TAG, "pc_radiobtn"); break; default: break; } } };
mRadioGroup.setOnCheckedChangeListener(mOnCheckedChangeListener);
后来仔细想想RadioButton是单选框,点击一次后,RadioButton已经被选中了,再点击的时候当然不会触发。解决方法就是在点击事件加一句代码:
case R.id.pc_radiobtn: pcRadioButton.setChecked(false); // 每次点击都设置false Log.e(TAG, "pc_radiobtn"); break;