如何在Android中均匀排列单选按钮?

32

我有三个单选按钮,我想把它们均匀地分布在屏幕上。当我使用 android:layout_weight="1" 时,按钮会被拉伸到整个屏幕的宽度。那么我该如何在它们之间保持相同的距离,并且能够适应不同屏幕尺寸?

<RadioGroup 
        android:id="@+id/auton_bar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingLeft="10dp"
        android:layout_below="@id/clear_fields"
                >
        <RadioButton
            android:id="@+id/auton_radio_1"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content" 
            android:background="@drawable/auton_col"
            android:layout_weight="1"

            />
        <!-- android:layout_marginRight="380dp"  --> 
        <RadioButton
            android:id="@+id/auton_radio_2"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content" 
            android:background="@drawable/auton_col"
            android:layout_weight="1"


            />
        <RadioButton
            android:id="@+id/auton_radio_3"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content" 
            android:background="@drawable/auton_col"
            android:layout_weight="1"
            />

    </RadioGroup>
3个回答

55
如果要让它们平均分配屏幕宽度,则需要在每个

1
谢谢,它起作用了,但由于某种原因,layout_weight参数使我的RadioButtons变长了一倍。 http://i.imgur.com/7PZfm1j.png 它们通常只有一半那么宽。 - rasen58
2
@rasen58 将单选按钮的 android:layout_width 设置为 0dp - Henry
@JamesMcCracken 非常棒!谢谢!将其转换为位图是否会自动缩放? - rasen58
在我的情况下,我意识到水平单选按钮组需要 android:layout_width="match_parent"。然而 - 接下来的问题是:如何使单选按钮圆圈和文本居中?仅对 radioButton 使用 android:gravity="center_horizontal" 只会使文本居中 - 这有多糟糕啊?! - Someone Somewhere
我发布了我的答案版本。 - Someone Somewhere
显示剩余4条评论

9
我注意到在RadioButton中使用布局权重会导致它们的对齐位置偏移,尽管它们绝对共享屏幕的50%(它们是左对齐的)。为每个RadioButton设置gravity只会使文本居中 /facepalm。
以下XML演示了如何水平对齐两个RadioButton(可以是任何视图)并使它们居中:
                <RadioGroup
                    android:id="@+id/radiogroup"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <Space
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"/>

                    <RadioButton
                        android:id="@+id/radioyes"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/yes"
                        android:checked="false"/>

                    <Space
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"/>

                    <RadioButton
                        android:id="@+id/radiono"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/no"
                        android:checked="false"/>

                    <Space
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"/>

                </RadioGroup>

1

将每个布局的宽度设置为与父布局相匹配,然后添加权重,就像线性布局一样。

<RadioGroup
            android:id="@+id/radio_group"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="@dimen/bigMarginStart"
            android:layout_marginTop="@dimen/smallMarginTop"
            android:layout_marginEnd="@dimen/baseMarginEnd"
            android:orientation="horizontal"
            android:weightSum="3"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

            <RadioButton
                android:id="@+id/all_"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/smallMarginTop"
                android:layout_weight="1"
                android:background="@drawable/radio_flat_selector"
                android:button="@android:color/transparent"
                android:checked="true"
                android:gravity="center"
                android:paddingLeft="@dimen/bigPaddingStart"
                android:paddingTop="@dimen/smallPaddingTop"
                android:paddingRight="@dimen/bigPaddingStart"
                android:paddingBottom="@dimen/smallPaddingBottom"
                android:text="All" />

            <RadioButton
                android:id="@+id/future_"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/smallMarginStart"
                android:layout_marginTop="@dimen/smallMarginTop"
                android:layout_marginEnd="@dimen/smallMarginEnd"
                android:layout_weight="1"
                android:background="@drawable/radio_flat_selector"
                android:button="@android:color/transparent"
                android:gravity="center"
                android:paddingLeft="@dimen/bigPaddingStart"
                android:paddingTop="@dimen/smallPaddingTop"
                android:paddingRight="@dimen/bigPaddingStart"
                android:paddingBottom="@dimen/smallPaddingBottom"
                android:text="Future" />

            <RadioButton
                android:id="@+id/direct_"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/smallMarginTop"
                android:layout_weight="1"
                android:background="@drawable/radio_flat_selector"
                android:button="@android:color/transparent"
                android:gravity="center"
                android:paddingLeft="@dimen/bigPaddingStart"
                android:paddingTop="@dimen/smallPaddingTop"
                android:paddingRight="@dimen/bigPaddingStart"
                android:paddingBottom="@dimen/smallPaddingBottom"
                android:text="Direct" />

        </RadioGroup>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接