Android: TextView 相对于 RadioGroup 的对齐方式

Android: TextView alignment with respect to RadioGroup

您好,我正在尝试实现以下设计(RadioGroup 与右侧的 TextView 平行)

为了这个要求,我写了下面的 xml 代码

<RelativeLayout
            android:id="@+id/rl_group_create_group_privacy"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/rl_group_create_group_icon"
            android:layout_marginTop="10dp"
            android:background="@drawable/rl_bg_board_group_create_group"
            android:padding="10dp" >

            <TextView
                android:id="@+id/tv_group_create_group_privacy"
                android:layout_width="60dp"
                android:layout_height="wrap_content"
                android:text="@string/group_create_new_group_privacy"
                android:textColor="@color/Black"
                android:textSize="15sp" />

            <RadioGroup
                android:id="@+id/rg_group_create_group_privacy"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@+id/tv_group_create_group_privacy"
                android:orientation="vertical" >

                <RadioButton
                    android:id="@+id/rb_group_create_group_public"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:checked="false"
                    android:text="@string/group_create_new_group_public"
                    android:textSize="12sp" />

                <RadioButton
                    android:id="@+id/rb_group_create_group_closed"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="20dp"
                    android:layout_weight="1"
                    android:checked="false"
                    android:text="@string/group_create_new_group_closed"
                    android:textSize="12sp" />

                <RadioButton
                    android:id="@+id/rb_group_create_group_secret"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="19dp"
                    android:layout_weight="1"
                    android:checked="false"
                    android:text="@string/group_create_new_group_secret"
                    android:textSize="12sp" />
            </RadioGroup>

            <RelativeLayout
                android:id="@+id/rl_group_create_group_privacy_desc"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_toRightOf="@+id/rg_group_create_group_privacy"
                android:background="@color/White" >

                <TextView
                    android:id="@+id/tv_group_create_group_public_desc"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="5dp"
                    android:text="@string/group_create_new_group_public_desc"
                    android:textColor="@color/Black"
                    android:textSize="12sp" />

                <TextView
                    android:id="@+id/tv_group_create_group_closed_desc"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/tv_group_create_group_public_desc"
                    android:layout_marginTop="10dp"
                    android:text="@string/group_create_new_group_closed_desc"
                    android:textColor="@color/Black"
                    android:textSize="12sp" />

                <TextView
                    android:id="@+id/tv_group_create_group_secret_desc"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/tv_group_create_group_closed_desc"
                    android:layout_marginTop="10dp"
                    android:text="@string/group_create_new_group_secret_desc"
                    android:textColor="@color/Black"
                    android:textSize="12sp" />
            </RelativeLayout>
        </RelativeLayout>

但它会根据设备改变对齐方式,如下图所示(有时单选按钮在 textView 的中间,有时在 textView 的开头,有时在 textView 的末尾)。通过在 layout-large, layout-small, layout-xlarge 中实现设计,我们可以通过某种方式实现这一点,但我不想遵循。那么,如何在不遵循 layout-large, layout-small, layout-xlarge

的情况下实现第一个图像设计

希望对您有所帮助

<LinearLayout
        android:id="@+id/rl_group_create_group_privacy"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/rl_group_create_group_icon"
        android:layout_marginTop="10dp"
        android:orientation="vertical"
        android:padding="10dp">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="top">

            <TextView
                android:id="@+id/tv_group_create_group_privacy"
                android:layout_width="60dp"
                android:layout_height="wrap_content"
                android:layout_marginTop="2dp"
                android:gravity="center"
                android:padding="5dp"
                android:text="Privacy"
                android:textColor="#000000"
                android:textSize="15sp" />

            <RadioButton
                android:id="@+id/rb_group_create_group_public"
                android:layout_width="80dp"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@+id/tv_group_create_group_privacy"
                android:checked="false"
                android:gravity="center|start"
                android:text="Public"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/tv_group_create_group_public_desc"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@+id/rb_group_create_group_public"
                android:padding="5dp"
                android:text="group_create_new_group_public_desc"
                android:textColor="#000000"
                android:textSize="12sp" />

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="top">

            <RadioButton
                android:id="@+id/rb_group_create_group_closed"
                android:layout_width="80dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="60dp"
                android:checked="false"
                android:text="Closed"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/tv_group_create_group_closed_desc"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@+id/rb_group_create_group_closed"
                android:padding="5dp"
                android:text="group_create_new_group_closed_desc"
                android:textColor="#000000"
                android:textSize="12sp" />

        </RelativeLayout>


        <RelativeLayout
            android:id="@+id/rl_group_create_group_privacy_desc"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="top">

            <RadioButton
                android:id="@+id/rb_group_create_group_secret"
                android:layout_width="80dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="60dp"
                android:checked="false"
                android:text="Secret"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/tv_group_create_group_secret_desc"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@+id/rb_group_create_group_secret"
                android:padding="5dp"
                android:text="group_create_new_group_secret_desc"
                android:textColor="#000000"
                android:textSize="12sp" />
        </RelativeLayout>

    </LinearLayout>

在Activity

 final RadioButton rbPublic = (RadioButton) findViewById(R.id.rb_group_create_group_public);
        final RadioButton rbCloses = (RadioButton) findViewById(R.id.rb_group_create_group_closed);
        final RadioButton rbSecret = (RadioButton) findViewById(R.id.rb_group_create_group_secret);

        rbPublic.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    rbCloses.setChecked(!isChecked);
                    rbSecret.setChecked(!isChecked);
                }
            }
        });
        rbCloses.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    rbPublic.setChecked(!isChecked);
                    rbSecret.setChecked(!isChecked);
                }
            }
        });
        rbSecret.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    rbCloses.setChecked(!isChecked);
                    rbPublic.setChecked(!isChecked);
                }
            }
        });