Android:水平放置单选按钮

Posted

技术标签:

【中文标题】Android:水平放置单选按钮【英文标题】:Android:placing the radio buttons horizontally 【发布时间】:2013-02-06 23:18:38 【问题描述】:

下面是我的相对布局..我试图将单选按钮放在编辑文本上方

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:background="#FFFFFF" >

    <ImageView
        android:id="@+id/fbreplycancel"
        android:layout_
        android:layout_
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/fbcancel" />

    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_
        android:layout_
        android:layout_alignParentRight="true"
        android:layout_below="@+id/fbcancel" >

        <Spinner
            android:id="@+id/replyspinner"
            android:layout_
            android:layout_
            android:layout_alignLeft="@+id/fbshare"
            android:layout_alignRight="@+id/fbshare"
            android:layout_below="@+id/fbshare"
            android:layout_marginTop="16dp"
            android:drawSelectorOnTop="true"
            android:entries="@array/fbcommentlist"
            android:visibility="gone" />

        <Button
            android:id="@+id/fbshare"
            android:layout_
            android:layout_
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:background="@drawable/fbbuttons"
            android:text="@string/share" />

        <ImageView
            android:id="@+id/fbpeople"
            android:layout_
            android:layout_
            android:layout_above="@+id/fbshare"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="19dp"
            android:background="@drawable/people2"
            android:drawSelectorOnTop="true"
            android:paddingTop="20dp" />

        <RadioButton
            android:id="@+id/radio2"
            android:layout_
            android:layout_
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:text="RadioButton" />
    </RelativeLayout>

    <View
        android:layout_
        android:layout_
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/imageView1"
        android:background="#3b5998" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_
        android:layout_
        android:layout_alignBottom="@+id/fbcancel"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:paddingRight="2dp"
        android:src="@drawable/askabud" />

    <TextView
        android:id="@+id/fbcommentpostedby"
        android:layout_
        android:layout_
        android:layout_alignLeft="@+id/fbedittext"
        android:layout_alignRight="@+id/fbcommentdisplay"
        android:layout_below="@+id/imageView1"
        android:layout_marginTop="15dp"
        android:textColor="#000000" />

    <TextView
        android:id="@+id/fbcommentdisplay"
        android:layout_
        android:layout_
        android:layout_alignLeft="@+id/fbedittext"
        android:layout_below="@+id/fbcommentpostedby"
        android:layout_toLeftOf="@+id/relativeLayout1"
        android:textColor="#000000" />

    <TextView
        android:id="@+id/fbtextview"
        android:layout_
        android:layout_
        android:layout_alignBottom="@+id/imageView1"
        android:layout_toLeftOf="@+id/fbreplycancel"
        android:layout_toRightOf="@+id/imageView1"
         android:text="@string/replyrecommend" 
          android:textSize="18sp"
          android:textColor="#000000"/>

    <TextView
        android:id="@+id/fbplacename"
        android:layout_
        android:layout_
        android:layout_alignLeft="@+id/fbcommentdisplay"
        android:layout_alignRight="@+id/fbcommentdisplay"
        android:layout_below="@+id/fbcommentdisplay"
        android:textColor="#000000" />

    <EditText
        android:id="@+id/fbedittext"
        android:layout_
        android:layout_
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/fbplacename"
        android:layout_marginLeft="19dp"
        android:layout_marginTop="45dp"
        android:layout_toLeftOf="@+id/relativeLayout1"
        android:background="@drawable/roundcorners"
        android:ems="10"
        android:hint="@string/fbhint"
        android:lines="6"
        android:scrollHorizontally="true"
        android:textSize="14sp"
        android:windowSoftInputMode="stateHidden" />

    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_
        android:layout_
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/fbplacename" >

        <RadioButton
            android:id="@+id/radio0"
            android:layout_
            android:layout_
            android:checked="true"
            android:text="1"
             />
    </RadioGroup>

    <RadioGroup
        android:id="@+id/radioGroup2"
        android:layout_
        android:layout_
        android:layout_alignTop="@+id/radioGroup1"
        android:layout_toLeftOf="@+id/relativeLayout1" >

        <RadioButton
            android:id="@+id/radio0"
            android:layout_
            android:layout_
            android:checked="true"
            android:text="3" />

        <RadioButton
            android:id="@+id/radio2"
            android:layout_
            android:layout_
            android:text="RadioButton" />
    </RadioGroup>

    <RadioButton
        android:id="@+id/radio1"
        android:layout_
        android:layout_
        android:layout_alignTop="@+id/radioGroup2"
        android:layout_toLeftOf="@+id/radioGroup2"
        android:text="2" />

</RelativeLayout>

我很难将它们水平排列。感谢任何帮助。

【问题讨论】:

orientation="horizo​​ntal" in radiogroup ? 如何让它们之间的间距相等 【参考方案1】:

要将无线电组(或任何其他视图)置于其他上方,只需执行以下操作:

android:layout_above="@+id/view_below"

改变刚刚设置的方向:

android:orientation="horizontal"

使用layout_weight

<RadioGroup
    android:id="@+id/radio_group"
    android:layout_
    android:layout_
    android:orientation="horizontal"
    android:layout_above="@+id/view_below" >

    <RadioButton
        android:id="@+id/radio1"
        android:layout_
        android:layout_weight="1"
        android:layout_
        android:checked="true"
        android:text="First" />

    <RadioButton
        android:id="@+id/radio2"
        android:layout_
        android:layout_weight="1"
        android:layout_
        android:text="Second" />
</RadioGroup>

【讨论】:

我将编辑答案并将代码放在一起。检查是否与您的相同。 @Sergio...谢谢你..完美 layout_alignParentLeft="true" 是绝对必要的吗?我无法使其正常工作,但我也在跨平台 Xamarin 应用程序的上下文中工作,其中可能会有所不同。 否 @FrankSchwieterman,该属性不是必需的,我已将其删除,谢谢。至于你的问题,你得到了什么?垂直单选按钮或不好的分布宽度值?就像你说的,这可能是 Xamarin 功能的问题 我得到的结果是按钮没有拉伸以填充父空间。我可以检查的容器有什么要求吗?谢谢。【参考方案2】:

您可以使用表格布局而不是相对布局。将行插入到表格布局中,并将单选按钮放置在表格行内..

对于等间距,遵循以下步骤

<TableRow
        android:id="@+id/tableRow2"
        android:layout_
        android:layout_
        android:layout_marginTop="50dp" >

        <RadioButton
            android:id="@+id/button2"
            android:layout_
            android:layout_
            android:layout_weight="1"
            android:text="@string/btnReject"
            android:onClick="onCallRejectButton" />

        <RadioButton
            android:id="@+id/button1"
            android:layout_
            android:layout_
            android:layout_weight="1
            android:onClick="onCallAcceptButton"
            android:text="@string/btnAccept" />

    </TableRow>

【讨论】:

这不是一个好主意,因为用户可以同时选择它们并且不能取消选择它们。通过单选组用户可以只选择其中一个,通过选择新的单选按钮,旧的选择单选按钮将被取消选择。【参考方案3】:

android:orientation="horizo​​ntal" 就这样做。在 radiogroup 标签中输入方向水平属性

 <RadioGroup
    android:id="@+id/radio"
    android:layout_
    android:layout_
    android:orientation="horizontal">

    <RadioButton
        android:id="@+id/radioMale"
        android:layout_
        android:layout_
        android:text="Male"
        android:checked="true" />

    <RadioButton
        android:id="@+id/radioFemale"
        android:layout_
        android:layout_
        android:text="Female" />

</RadioGroup>

【讨论】:

【参考方案4】:

您只需将 Radio Group 方向设置为水平。

 <RadioGroup                                    
android:id="@+id/radio_group_forgot_password"
android:layout_
android:layout_
**android:orientation="horizontal"**                               
>

【讨论】:

以上是关于Android:水平放置单选按钮的主要内容,如果未能解决你的问题,请参考以下文章

水平居中单选按钮标签

如何在屏幕的左侧和右侧放置 Angular Material 单选按钮?

标签和组单选按钮水平对齐

html FacetWP股票媒体库(水平单选按钮)

使Drupal窗体单选按钮水平内联

是否可以更改android单选按钮组中的单选按钮图标