【问题标题】:Align radio buttons inside RadioGroup对齐 RadioGroup 内的单选按钮
【发布时间】:2019-05-09 09:03:34
【问题描述】:

我有四个单选按钮,我想将它们水平和垂直对齐。我尝试在 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>

如下所示:

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

【问题讨论】:

  • 你找到解决办法了吗?

标签: android xml android-layout


【解决方案1】:

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

将 currentChecked RadioButton Id 存储在字段中。

int currentCheckedRadioButton = 0;

将所有 radioButtons 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();

            }
        });
    }

【讨论】:

    【解决方案2】:

    请改成这样的代码:

    <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>
    

    【讨论】:

    • 您的代码有效,但现在我可以选择多个单选按钮。
    • 亲爱的,如果您选择单选组,则不能选择多个单选按钮如果您想选择多个单选按钮,请仅选择单选按钮而不选择单选组
    • 我在第一条评论中并不清楚。使用此代码,我可以选择多个单选按钮,这与我想要的相反。我希望广播组按预期工作,但这段代码不能。
    【解决方案3】:

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

    <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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      • 2017-11-05
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      相关资源
      最近更新 更多