单选按钮在 2 条水平线上的一个单选组中

shi*_*edi 6 android radio-group radio-button android-layout

在此处输入图片说明

我尝试在 2 行的一个 Radio 组中设置 4 个单选按钮,但问题是当我采用水平方向的线性布局时,无线电组功能不起作用。所有单选按钮选择 。一次只能选择一个按钮。

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

                <RadioButton
                    android:id="@+id/r1"

                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="@string/lbl1" />

                <RadioButton
                    android:id="@+id/r2"

                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="@string/lbl2" />
            </LinearLayout>

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

                <RadioButton
                    android:id="@+id/r3"

                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="@string/lbl3" />

                <RadioButton
                    android:id="@+id/r4"

                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="@string/lbl4" />
            </LinearLayout>
        </RadioGroup>
Run Code Online (Sandbox Code Playgroud)

Mic*_*use 5

RadioGroup 目前不允许嵌套布局。(有关更多详细信息,请参阅 AOSP 问题 #8952)

因此,RadioButton 必须是父 RadioGroup 的直接子级。

既然如此,并注意到 RadioGroup 扩展了 LinearLayout,我认为您必须在一行或一列中列出所有单选按钮。

顺便说一句,没有什么可以阻止您创建自己的 RadioGroup 版本,该版本是从更灵活的东西(如relativelayout)扩展而来的。您可以从 RadioGroup 中的代码开始,并对其进行调整以满足您的需求。


小智 0

我不知道您是否还需要其他选择,但您可以使用以下命令“强制”第二行:

  1. 设置RadioGroup水平方向
  2. 第二个在同一“行”的单选按钮中设置相同的marginTop
  3. 第三个在每个元素(2及以后)的第一个元素上设置一个负的marginStart,这将标记每行的星号,其他元素将跟随

这是一个例子:

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

 <RadioButton
   android:id="@+id/r1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="@string/lbl1" />

   <RadioButton
   android:id="@+id/r2"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="@string/lbl2" />

  <RadioButton
   android:id="@+id/r3"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_marginStart="-180dp"
   android:layout_marginTop="40dp" 
   android:text="@string/lbl3" />

  <RadioButton
   android:id="@+id/r4"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_marginStart="0dp"
   android:layout_marginTop="40dp" 
   android:text="@string/lbl4" />

   </RadioGroup>
Run Code Online (Sandbox Code Playgroud)