赞
踩
@Override public void addView(View child, int index, ViewGroup.LayoutParams params) { // 下面这行就是关键中的关键了 if (child instanceof RadioButton) { final RadioButton button = (RadioButton) child; if (button.isChecked()) { mProtectFromCheckedChange = true; if (mCheckedId != -1) { setCheckedStateForView(mCheckedId, false); } mProtectFromCheckedChange = false; setCheckedId(button.getId()); } } super.addView(child, index, params); }
让我们看看关键的判断:if (child instanceof RadioButton)
难怪没有了单选效果,因为我们在RadioGroup里面还嵌套了一层LinearLayout,无法进到判断中的代码块。
既然我们已经知道了为什么多行RadioGroup会没有单选效果,那么解决的方法也就呼之欲出了
方法一: RadioGroup其实也是继承了LinearLayout来实现的,那么我们定义两个水平布局的RadioGroup,分别摆放其中的RadioGroup,然后设置相应的点击事件不就可以了吗?
xml布局
<RadioGroup android:id="@+id/rg_one" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" android:orientation="horizontal"> <RadioButton android:id="@+id/rb_problem_speed_up_error" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/selector_radiobutton" android:button="@null" android:paddingStart="@dimen/dp_14" android:paddingTop="@dimen/dp_6" android:paddingEnd="@dimen/dp_14" android:paddingBottom="@dimen/dp_6" android:text="@string/speed_up_error" android:textColor="@drawable/selector_radiobutton_text" android:textSize="@dimen/sp_15" /> <RadioButton android:id="@+id/rb_problem_error_code" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_10" android:background="@drawable/selector_radiobutton" android:button="@null" android:paddingStart="@dimen/dp_14" android:paddingTop="@dimen/dp_6" android:paddingEnd="@dimen/dp_14" android:paddingBottom="@dimen/dp_6" android:text="@string/error_code" android:textColor="@drawable/selector_radiobutton_text" android:textSize="@dimen/sp_15" /> <RadioButton android:id="@+id/rb_problem_charge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_10" android:background="@drawable/selector_radiobutton" android:button="@null" android:paddingStart="@dimen/dp_14" android:paddingTop="@dimen/dp_6" android:paddingEnd="@dimen/dp_14" android:paddingBottom
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。