我如何安排RadioButtons?

时间:2017-04-22 12:30:19

标签: android xml attributes radio-button radio-group

我在RadioGroup中有4个RadioButtons,如下所示:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <RadioButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/button1"
            android:text="Button 1"/>

        <RadioButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/button2"
            android:text="Button 2"/>

        <RadioButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/button3"
            android:text="Button 3"/>

        <RadioButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/button4"
            android:text="Button 4"/>

    </RadioGroup>

</RelativeLayout>

我希望RadioButton 2在RadioButton 1的右边,我希望RadioButton 3低于RadioButton 1,我希望RadioButton 4在RadioButton 3的右边。

正常属性,如

android:layout_below=""

android:layout_toRightOf""

不适用于RadioButtons。如何在这里以上述XML方式放置RadioButtons?

4 个答案:

答案 0 :(得分:1)

解决方案1:使用LinearLayout

  1. LinearLayout添加为RadioGroup的直接子项,并使用vertical为其android:orientation="vertical"提供方向。
  2. 使用LinearLayoutLinearLayoutandroid:orientation="horizontal"上方添加另外两个android:weightSum="2"
  3. button1button2放入第一个水平LinearLayout,并将button3button4放入第二个水平LinearLayout
  4. 使用属性buttons提供所有4 1权重android:layout_weight="1"
  5. 试试这个:

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    
        <RadioGroup
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    android:weightSum="2">
    
                    <RadioButton
                        android:id="@+id/button1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="Button 1"/>
    
                    <RadioButton
                        android:id="@+id/button2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="Button 2"/>
                </LinearLayout>
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    android:weightSum="2">
    
                    <RadioButton
                        android:id="@+id/button3"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="Button 3"/>
    
                    <RadioButton
                        android:id="@+id/button4"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="Button 4"/>
                </LinearLayout>
    
            </LinearLayout>
        </RadioGroup>
    
    </RelativeLayout>
    

    <强>输出:

    enter image description here

    解决方案2:使用RelativeLayout

    1. RelativeLayout添加为RadioGroup的直接子项,并将所有RadioButton放入此RelativeLayout
    2. 将属性android:layout_toRightOf="@id/button1"添加到button2,以显示right的{​​{1}}。
    3. 将属性button1“添加到android:layout_below="@id/button1,以显示button3 below
    4. 将属性button1android:layout_toRightOf="@id/button3"添加到android:layout_alignBottom="@id/button3"以显示button4的权利。
    5. 尝试:

      button3

      <强>输出:

      enter image description here

      仅供参考,您可以根据需要在<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <RadioGroup android:layout_width="match_parent" android:layout_height="wrap_content"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <RadioButton android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="Button 1"/> <RadioButton android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/button1" android:text="Button 2"/> <RadioButton android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/button1" android:text="Button 3"/> <RadioButton android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/button3" android:layout_alignBottom="@id/button3" android:text="Button 4"/> </RelativeLayout> </RadioGroup> </RelativeLayout> 之间使用paddingmargin

      希望这会有所帮助〜

答案 1 :(得分:0)

我建议你不要在RadioGroup中使用嵌套的嵌套布局(线性/相对)来增加视图层次结构。此外,您将无法使用嵌套布局获得单一选择功能。 RadioGroup实际上扩展了LinearLayout。因此它只能垂直或水平排列RadioButtons。在这里,我分享了链接 RelativeRadioGroup 我的库实际上是一个RelativeRadioGroup,所以你可以按照自己的意愿安排RadioButtons。

答案 2 :(得分:0)

请尝试以下代码,

    <RadioGroup
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

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

  <RadioButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/button1"
            android:text="Button 1"/>

        <RadioButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/button2"
            android:text="Button 2"/>


 </LinearLayout>



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


        <RadioButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/button3"
            android:text="Button 3"/>

        <RadioButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/button4"
            android:text="Button 4"/>


 </LinearLayout>

我希望这对你有帮助。

答案 3 :(得分:0)

你可以试试这个

<RelativeLayout xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"
tools:ignore="NewApi">



<RadioGroup
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

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


        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/button1"
            android:text="Button 1"/>

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/button2"
            android:text="Button 2"
            android:layout_toRightOf="@+id/button1"/>
    </RelativeLayout>


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


        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/button3"
            android:text="Button 3"/>

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/button4"
            android:text="Button 4"
            android:layout_toRightOf="@+id/button3"/>
    </RelativeLayout>

</RadioGroup>