1

我的 RadioGroup 中的 RadioButtons 的间距有点问题。根据预览,它应该是这样的:

在此处输入图像描述

但在我运行 KitKat 的手机上,它看起来像这样:

在此处输入图像描述

这很令人困惑,因为在运行 Lollipop 的手机上,使用完全相同的代码看起来非常好:

在此处输入图像描述

由于某些原因,在早期版本中 RadioGroup 似乎无缘无故地超出了父布局。我已经坚持了几个小时,并尝试了可能存在的 layout_height、gravity、layout_gravity 和 weight 的每一种组合。据我所知,它似乎几乎忽略了 layout_below 属性。但为什么!提前致谢,XML代码如下

 <RelativeLayout
                    android:id="@+id/genderLayout"
                    android:layout_below="@+id/genderText"
                    style="@style/EditProfBoxStyle">

                    <TextView
                        android:id="@+id/maleText"
                        android:text="@string/choice_male"
                        style="@style/Text.Medium.EditProfile"/>

                    <TextView
                        android:id="@+id/femaleText"
                        android:text="@string/choice_female"
                        android:layout_below="@+id/maleText"
                        style="@style/Text.Medium.EditProfile" />

                    <TextView
                        android:id="@+id/bothText"
                        android:text="@string/choice_both"
                        android:layout_below="@+id/femaleText"
                        style="@style/Text.Medium.EditProfile"/>

                    <RadioGroup
                        android:id="@+id/genderGroup"
                        style="@style/RadioGroupStyle"
                        android:layout_alignBottom="@id/bothText"
                        android:layout_alignTop="@id/maleText">

                        <RadioButton
                            android:id="@+id/maleCheckBox"
                            style="@android:style/Widget.CompoundButton.CheckBox"
                            android:layout_weight="1"
                            android:layout_width="wrap_content"
                            android:layout_height="0dp"/>

                        <RadioButton
                            android:id="@+id/femaleCheckBox"
                            style="@android:style/Widget.CompoundButton.CheckBox"
                            android:layout_weight="1"
                            android:layout_width="wrap_content"
                            android:layout_height="0dp"/>

                        <RadioButton
                            android:id="@+id/bothCheckBox"
                            style="@android:style/Widget.CompoundButton.CheckBox"
                            android:layout_weight="1"
                            android:layout_width="wrap_content"
                            android:layout_height="0dp"/>
                    </RadioGroup>
                </RelativeLayout>

RadioGroup 风格:

<style name="RadioGroupStyle">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_alignParentRight">true</item>
        <item name="android:layout_alignParentEnd">true</item>
    </style>

编辑:问题肯定出在我作为父母使用的滚动视图上。 如果我删除滚动视图,一切都会恢复正常。而且我已经包括在内fillviewport=true,所以我不知道问题是什么

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:fillViewport="true">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin"
        tools:context="com.richluick.android.roomie.ui.activities.EditProfileActivity">

        <!--Relative layout with RadioButtons from above goes here-->

</RelativeLayout>
4

1 回答 1

0

与其一次性将所有文本视图和单选按钮结构化,不如将它们结构化为行,然后在行内放置具有相同布局参数的复选框。

我不止一次听说过使用太多视图是禁忌。在 Android <1.5 中就是这种情况,您仍然希望厌倦在布局中使用太多视图,但有时即使仅添加一层额外的视图深度也可以使一切变得不同。添加一个额外的视图确实会在对象树中产生一个额外的对象,但它也会使布局过程更加精确和容易,因此这是一种权衡。

尝试这样的事情(注意:它未经测试 - 只是给你一个一般的感觉)

 <RelativeLayout
                android:id="@+id/genderLayout"
                android:layout_below="@+id/genderText"
                style="@style/EditProfBoxStyle">
      <LinearLayout
           android:id="@+id/male"
           android:orientation="horizontal"
      >
                <TextView
                    android:id="@+id/maleText"
                    android:text="@string/choice_male"
                    style="@style/Text.Medium.EditProfile"/>

                <RadioGroup
                    android:id="@+id/genderGroup"
                    style="@style/RadioGroupStyle"
                    android:layout_alignBottom="@id/bothText"
                    android:layout_alignTop="@id/maleText">
      </LinearLayout>
      <LinearLayout.... (etc etc)
 </RelativeLayout>
于 2015-04-13T23:48:00.037 回答