我如何安排 RadioButtons?
How do I arrange RadioButtons?
我在一个 RadioGroup 中有 4 个 RadioButton,如下所示:
<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""
不适用于单选按钮。我怎样才能按照上面XML中描述的方式放置单选按钮?
我建议您不要在 RadioGroup 中使用嵌套的嵌套布局 (Linear/Relative) 来增加视图层次结构。此外,您不会使用嵌套布局获得单选功能。 RadioGroup 实际上扩展了 LinearLayout。所以它只有垂直或水平排列单选按钮的能力。在这里我分享了 link
RelativeRadioGroup
我的库实际上是一个 RelativeRadioGroup,因此您可以根据需要安排 RadioButtons。
试试下面的代码,
<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>
希望对您有所帮助。
解决方案 1:使用 LinearLayout
:
- 将
LinearLayout
添加为 RadioGroup
的直接子项,并使用 android:orientation="vertical"
赋予其 vertical
方向。
- 在
LinearLayout
上面添加另外两个 LinearLayout
和 android:orientation="horizontal"
和 android:weightSum="2"
。
- 将
button1
和button2
放入第一个水平LinearLayout
并将button3
和button4
放入第二个水平LinearLayout
.
- 使用属性
android:layout_weight="1"
赋予全部 4 buttons
权重 1
。
试试这个:
<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>
输出:
解决方案 2:使用 RelativeLayout
:
- 将
RelativeLayout
添加为 RadioGroup
的直接子代,并将所有 RadioButton
放入此 RelativeLayout
中。
- 将属性
android:layout_toRightOf="@id/button1"
添加到 button2
以显示 button1
的 right
。
- 将属性
android:layout_below="@id/button1
" 添加到 button3
以显示 button1
的 below
。
- 将属性
android:layout_toRightOf="@id/button3"
和 android:layout_alignBottom="@id/button3"
添加到 button4
使其显示在 button3
的右侧。
尝试一下:
<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>
输出:
仅供参考, 您可以根据需要在 buttons
之间使用 padding
或 margin
。
希望对你有所帮助~
你可以试试这个
<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>
我在一个 RadioGroup 中有 4 个 RadioButton,如下所示:
<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""
不适用于单选按钮。我怎样才能按照上面XML中描述的方式放置单选按钮?
我建议您不要在 RadioGroup 中使用嵌套的嵌套布局 (Linear/Relative) 来增加视图层次结构。此外,您不会使用嵌套布局获得单选功能。 RadioGroup 实际上扩展了 LinearLayout。所以它只有垂直或水平排列单选按钮的能力。在这里我分享了 link RelativeRadioGroup 我的库实际上是一个 RelativeRadioGroup,因此您可以根据需要安排 RadioButtons。
试试下面的代码,
<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>
希望对您有所帮助。
解决方案 1:使用 LinearLayout
:
- 将
LinearLayout
添加为RadioGroup
的直接子项,并使用android:orientation="vertical"
赋予其vertical
方向。 - 在
LinearLayout
上面添加另外两个LinearLayout
和android:orientation="horizontal"
和android:weightSum="2"
。 - 将
button1
和button2
放入第一个水平LinearLayout
并将button3
和button4
放入第二个水平LinearLayout
. - 使用属性
android:layout_weight="1"
赋予全部 4buttons
权重1
。
试试这个:
<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>
输出:
解决方案 2:使用 RelativeLayout
:
- 将
RelativeLayout
添加为RadioGroup
的直接子代,并将所有RadioButton
放入此RelativeLayout
中。 - 将属性
android:layout_toRightOf="@id/button1"
添加到button2
以显示button1
的right
。 - 将属性
android:layout_below="@id/button1
" 添加到button3
以显示button1
的below
。 - 将属性
android:layout_toRightOf="@id/button3"
和android:layout_alignBottom="@id/button3"
添加到button4
使其显示在button3
的右侧。
尝试一下:
<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>
输出:
仅供参考, 您可以根据需要在 buttons
之间使用 padding
或 margin
。
希望对你有所帮助~
你可以试试这个
<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>