美文网首页
解决RadioGroup多行显示,单选问题

解决RadioGroup多行显示,单选问题

作者: 黄晓果 | 来源:发表于2017-02-24 11:19 被阅读0次

效果如下:

QQ图片20170224110543.png QQ图片20170224110557.png

RadioGroup多行显示其实就是两个RadioGroup进行切换,使用RadioGroup的clearCheck()方法进行操作

1、布局如下:

                  <RadioGroup
                        android:id="@+id/rg_manhole_state_one"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="5dp"
                        android:layout_toRightOf="@id/tv_manhole_state"
                        android:orientation="horizontal"
                        android:paddingTop="@dimen/padding_5">

                        <RadioButton
                            android:id="@+id/rb_intact"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:button="@null"
                            android:drawableLeft="@drawable/bg_radiobutten"
                            android:drawablePadding="@dimen/padding_10"
                            android:text="@string/intact"
                            android:textColor="@color/white"
                            android:textSize="@dimen/small_size" />

                        <RadioButton
                            android:id="@+id/rb_lose"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="30dp"
                            android:button="@null"
                            android:drawableLeft="@drawable/bg_radiobutten"
                            android:drawablePadding="@dimen/padding_10"
                            android:text="@string/lose"
                            android:textColor="@color/white"
                            android:textSize="@dimen/small_size" />

                        <RadioButton
                            android:id="@+id/rb_sunken"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="30dp"
                            android:button="@null"
                            android:drawableLeft="@drawable/bg_radiobutten"
                            android:drawablePadding="@dimen/padding_10"
                            android:text="@string/sunken"
                            android:textColor="@color/white"
                            android:textSize="@dimen/small_size" />
                    </RadioGroup>
                 <RadioGroup
                    android:id="@+id/rg_manhole_state_two"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="@dimen/padding_100"
                    android:layout_marginTop="5dp"
                    android:orientation="horizontal"
                    android:paddingTop="@dimen/padding_5">

                    <RadioButton
                        android:id="@+id/rb_occupation"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:button="@null"
                        android:drawableLeft="@drawable/bg_radiobutten"
                        android:drawablePadding="@dimen/padding_10"
                        android:text="@string/occupation"
                        android:textColor="@color/white"
                        android:textSize="@dimen/small_size" />

                    <RadioButton
                        android:id="@+id/rb_damage"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="30dp"
                        android:button="@null"
                        android:drawableLeft="@drawable/bg_radiobutten"
                        android:drawablePadding="@dimen/padding_10"
                        android:text="@string/damage"
                        android:textColor="@color/white"
                        android:textSize="@dimen/small_size" />

                    <RadioButton
                        android:id="@+id/rb_heave"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="30dp"
                        android:button="@null"
                        android:drawableLeft="@drawable/bg_radiobutten"
                        android:drawablePadding="@dimen/padding_10"
                        android:text="@string/heave"
                        android:textColor="@color/white"
                        android:textSize="@dimen/small_size" />
                </RadioGroup>


2、具体操作如下:

声明控件:


    /**
     * 完好
     */
    @InjectView(R.id.rb_intact)
    RadioButton rbIntact;
    /**
     * 丢失
     */
    @InjectView(R.id.rb_lose)
    RadioButton rbLose;
    /**
     * 凹陷
     */
    @InjectView(R.id.rb_sunken)
    RadioButton rbSunken;
    @InjectView(R.id.rg_manhole_state_one)
    RadioGroup rgManholeStateOne;
    /**
     * 占用
     */
    @InjectView(R.id.rb_occupation)
    RadioButton rbOccupation;
    /**
     * 损坏
     */
    @InjectView(R.id.rb_damage)
    RadioButton rbDamage;
    /**
     * 凸起
     */
    @InjectView(R.id.rb_heave)
    RadioButton rbHeave;
    @InjectView(R.id.rg_manhole_state_two)
    RadioGroup rgManholeStateTwo;

设置监听:

       rgManholeStateOne.setOnCheckedChangeListener(new OnMyManholeStateOneCheckedChangeListener());
        rgManholeStateTwo.setOnCheckedChangeListener(new OnMyManholeStateTwoCheckedChangeListener());

实现单选


    private class OnMyManholeStateOneCheckedChangeListener implements RadioGroup.OnCheckedChangeListener {

        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int position) {
            switch (position) {
                case R.id.rb_intact:
                    if (rbIntact.isChecked())
                        rgManholeStateTwo.clearCheck();
                    break;
                case R.id.rb_lose:
                    if (rbLose.isChecked())
                        rgManholeStateTwo.clearCheck();
                    break;
                case R.id.rb_sunken:
                    if (rbSunken.isChecked())
                        rgManholeStateTwo.clearCheck();
                    break;
            }
        }
    }

    private class OnMyManholeStateTwoCheckedChangeListener implements RadioGroup.OnCheckedChangeListener {

        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int position) {

            switch (position) {
                case R.id.rb_occupation:
                    if (rbOccupation.isChecked())
                        rgManholeStateOne.clearCheck();
                    break;
                case R.id.rb_damage:
                    if (rbDamage.isChecked())
                        rgManholeStateOne.clearCheck();
                    break;
                case R.id.rb_heave:
                    if (rbHeave.isChecked())
                        rgManholeStateOne.clearCheck();
                    break;
            }
        }
    }

相关文章

网友评论

      本文标题:解决RadioGroup多行显示,单选问题

      本文链接:https://www.haomeiwen.com/subject/qxxwwttx.html