对齐RadioGroup中的单选按钮

时间:2015-03-31 19:28:06

标签: android xml android-layout

我有四个单选按钮,我想要水平和垂直对齐它们。我试图在AndroidStudio中拖动它们,但它不会让我将它们拖到我想要的位置。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/test_activity_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:weightSum="1"
tools:context="com.aruffolo.quiz.TestActivity">

<TextView
    android:id="@+id/test_activity_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/test_activity_msg" />

<TextView
    android:id="@+id/questionText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/test_activity_text"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="86dp"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<RadioGroup
    android:layout_width="500dp"
    android:layout_height="250dp"
    android:layout_weight=".07"
    android:gravity="center"
    android:id="@+id/radioGroup"
    android:layout_below="@+id/questionText">


    <RadioButton
        android:id="@+id/radioButton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New RadioButton"
        android:layout_gravity="left|top"
        android:layout_marginLeft="5dp"/>

    <RadioButton
    android:id="@+id/radioButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New RadioButton"
    android:layout_gravity="right|top"
    android:layout_marginRight="5dp"    />

    <RadioButton
    android:id="@+id/radioButton4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New RadioButton"
        android:layout_gravity="bottom|left"
        android:layout_marginLeft="5dp"/>

<RadioButton
    android:id="@+id/radioButton3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New RadioButton"
    android:layout_gravity="bottom|right"
    android:layout_marginRight="5dp"/>

</RadioGroup>

以下是它的样子:layout

顶部和底部按钮应水平对齐。

3 个答案:

答案 0 :(得分:0)

您无法做到这一点,因为RadioGroup是LinearLayout类的子级。 我的解决方案是将radioButtons放置在RelativeLayout,ConstrainLayout或嵌套的LinearLayouts中。

将currentChecked单选按钮ID存储在字段中。

int currentCheckedRadioButton = 0;

将所有单选按钮ID存储在int Array字段中。

int[] myRadioButtons= new int[6];

并在onCreate中:

    //add radioButtons to the array field.
    myRadioButtons[0] = R.id.first;
    myRadioButtons[1] = R.id.second;
    //..
    //add onClickListener for each radioButton.
    for (int radioButtonID : myRadioButtons) {
        findViewById(radioButtonID).setOnClickListener(
                    new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (currentCheckedRadioButton != 0){
                    ((RadioButton) findViewById(currentCheckedRadioButton)).setChecked(false);
                }

                currentCheckedRadioButton = v.getId();

            }
        });
    }

答案 1 :(得分:-1)

请改变这样的代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/test_activity_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:weightSum="1"
    tools:context="com.aruffolo.quiz.TestActivity">

    <TextView
        android:id="@+id/test_activity_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="test_activity_msg" />

    <TextView
        android:id="@+id/questionText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/test_activity_text"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="86dp"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <RadioGroup
        android:layout_width="500dp"
        android:layout_height="250dp"
        android:layout_weight=".07"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
      android:gravity="center_horizontal|center_vertical"
        android:id="@+id/radioGroup"
        android:layout_below="@+id/questionText">

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
        <RadioButton
            android:id="@+id/radioButton2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New RadioButton"

            android:layout_marginLeft="5dp"/>

        <RadioButton
            android:id="@+id/radioButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New RadioButton"

            android:layout_marginRight="5dp"    />
</LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        <RadioButton
            android:id="@+id/radioButton4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New RadioButton"

            android:layout_marginLeft="5dp"/>

        <RadioButton
            android:id="@+id/radioButton3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New RadioButton"

            android:layout_marginRight="5dp"/>
</LinearLayout>
    </RadioGroup>
    </RelativeLayout>

答案 2 :(得分:-1)

如果您想选择多个单选按钮,请更改如下代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/test_activity_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:weightSum="1"
    tools:context="com.aruffolo.quiz.TestActivity">

    <TextView
        android:id="@+id/test_activity_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="test_activity_msg" />

    <TextView
        android:id="@+id/questionText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/test_activity_text"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="86dp"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <LinearLayout
        android:layout_width="500dp"
        android:layout_height="250dp"
        android:layout_weight=".07"
        android:orientation="vertical"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:gravity="center_horizontal|center_vertical"
        android:id="@+id/radioGroup"
        android:layout_below="@+id/questionText">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <RadioButton
                android:id="@+id/radioButton2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New RadioButton"

                android:layout_marginLeft="5dp"/>

            <RadioButton
                android:id="@+id/radioButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New RadioButton"

                android:layout_marginRight="5dp"    />
        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <RadioButton
                android:id="@+id/radioButton4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New RadioButton"

                android:layout_marginLeft="5dp"/>

            <RadioButton
                android:id="@+id/radioButton3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New RadioButton"

                android:layout_marginRight="5dp"/>
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>