当前位置:   article > 正文

Android随笔3:多行RadioGroup_is partially hidden in layout

is partially hidden in layout

一、简介


在开发某APP时,遇到这么一个问题:要使用RadioGroup来实现单选框效果,但是item太多,要分成两行来显示。
一开始我心想,这不是很简单吗,在xml布局里设置RadioGroup的orientation值为vertical,里面嵌套一个水平布局的LinearLayout,然后把RadioButton给它一个一个摆上去不就完事儿咯~so easy的事情,万万没想到。。。。。。

什么鬼??? 为什么没有单选效果了???
这个问题让我百思不得其解,直到我看到了RadioGroup的源码

二、源码分析

	@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);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

让我们看看关键的判断:if (child instanceof RadioButton)
难怪没有了单选效果,因为我们在RadioGroup里面还嵌套了一层LinearLayout,无法进到判断中的代码块。
既然我们已经知道了为什么多行RadioGroup会没有单选效果,那么解决的方法也就呼之欲出了

三、实现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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/733687
推荐阅读
相关标签
  

闽ICP备14008679号