RadioGroup作为viewpage的子布局,RadioGroup单选失效

选择一个GroupButton后,再选择另一个,结果两个都选中了,继续选择,四个全部被选中。明明四个GroupButton都是包裹在RadioGroup中的,按理说,选择第二个时,之前被选中的应该变为未被选中。这是为什么呢?对于像我这种头一次遇见这种情况的小白来说,百思不得其解。

上网查了很多,结果没有一个讲到这个问题,虽然这对于经验较为丰富的人来说只是一个微不足道的问题。于是本人提一下,方便供后续遇到这个问题的人参考。也是一次对自己经历的记录。

不过在我我的多次排查后,终于发现了问题所在。

原来的xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/viewpage2next"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_marginTop="10dp"
        android:layout_marginStart="10dp"
        android:id="@+id/exam_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="25dp"/>

    <RadioGroup
        android:id="@+id/radiogrp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/checkA"
            android:layout_width="64dp"
            android:layout_height="84dp"
            android:text="A"
            android:textSize="20dp"/>

        <TextView
            android:id="@+id/tva"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="25dp"
            android:text="cshdbjchdbhjcshsc"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/checkB"
            android:layout_width="64dp"
            android:layout_height="84dp"
            android:text="B"
            android:textSize="20dp"/>

        <TextView
            android:id="@+id/tvb"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="25dp"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/checkC"
            android:layout_width="64dp"
            android:layout_height="84dp"
            android:text="C"
            android:textSize="20dp"/>

        <TextView
            android:id="@+id/tvc"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="25dp"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/checkD"
            android:layout_width="64dp"
            android:layout_height="84dp"
            android:text="D"
            android:textSize="20dp"/>

        <TextView
            android:id="@+id/tvd"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="25dp"/>
    </LinearLayout>
    </RadioGroup>

 


</LinearLayout>

修改后的xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/viewpage2next"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/exam_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="10dp"
        android:layout_marginTop="10dp"
        android:textSize="25dp" />

    <RadioGroup
        android:id="@+id/radiogrp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">


            <RadioButton
                android:id="@+id/checkA"
                android:layout_width="64dp"
                android:layout_height="84dp"
                android:text="A"
                android:textSize="20dp" />

            <TextView
                android:id="@+id/tva"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="cshdbjchdbhjcshsc"
                android:textSize="25dp" />



        <RadioButton
            android:id="@+id/checkB"
            android:layout_width="64dp"
            android:layout_height="84dp"
            android:text="B"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/tvb"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="25dp" />
     
        <RadioButton
            android:id="@+id/checkC"
            android:layout_width="64dp"
            android:layout_height="84dp"
            android:text="C"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/tvc"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="25dp" />

        <RadioButton
            android:id="@+id/checkD"
            android:layout_width="64dp"
            android:layout_height="84dp"
            android:text="D"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/tvd"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="25dp" />

    </RadioGroup>

  


</LinearLayout>

删除原来包裹的LineaLayout布局,再运行即可实现单选,效果如下,原本是想用RadioButton的text显示选项,另外用TextView显示选型内容。于是为了排版使用了,线性布局,发现了这个问题。

验证猜想xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/viewpage2next"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/exam_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="10dp"
        android:layout_marginTop="10dp"
        android:textSize="25dp" />

    <RadioGroup
        android:id="@+id/radiogrp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <RadioButton
                android:id="@+id/checkA"
                android:layout_width="64dp"
                android:layout_height="84dp"
                android:text="A"
                android:textSize="20dp" />

            <TextView
                android:id="@+id/tva"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="cshdbjchdbhjcshsc"
                android:textSize="25dp" />



        <RadioButton
            android:id="@+id/checkB"
            android:layout_width="64dp"
            android:layout_height="84dp"
            android:text="B"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/tvb"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="25dp" />
        </LinearLayout>


        <RadioButton
            android:id="@+id/checkC"
            android:layout_width="64dp"
            android:layout_height="84dp"
            android:text="C"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/tvc"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="25dp" />

        <RadioButton
            android:id="@+id/checkD"
            android:layout_width="64dp"
            android:layout_height="84dp"
            android:text="D"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/tvd"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="25dp" />

    </RadioGroup>



</LinearLayout>

 验证结果:如下图。被线性布局包裹的RadioButton没有单选效果,未被包裹的能正常实现单选。

至于为什么被线性布局包裹后,RadioButton就不能单选了,在下还甚是不解,望诸君解惑!!!

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RadioGroup是一个Android控件,它包含多个RadioButton,但是在同一时间只能选择其中的一个RadioButton。这个控件通常用于单选项的选择,比如性别、年龄段等。 以下是一个简单的RadioGroup单选的例: 1.在XML布局文件中添加RadioGroup和RadioButton。 ``` <RadioGroup android:id="@+id/radio_group" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <RadioButton android:id="@+id/radio_button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Option 1" /> <RadioButton android:id="@+id/radio_button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Option 2" /> <RadioButton android:id="@+id/radio_button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Option 3" /> </RadioGroup> ``` 2.在相应的Activity中获取RadioGroup,并为其设置OnCheckedChangeListener。 ``` RadioGroup radioGroup = findViewById(R.id.radio_group); radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { //获取被选中的RadioButton RadioButton radioButton = group.findViewById(checkedId); //获取被选中的RadioButton的文本 String text = radioButton.getText().toString(); //在这里可以进行相应的操作,比如显示选中的选项 } }); ``` 这样,当用户选择RadioGroup中的一个选项时,就会触发OnCheckedChangeListener,并在其中获取被选中的RadioButton的文本,从而进行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值