ScrollView的RadioButton间距问题

时间:2015-03-26 16:07:13

标签: android xml android-scrollview radio-group android-radiogroup

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

enter image description here

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

enter image description here

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

enter image description here

由于某些原因,早期版本的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:

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

编辑:问题肯定是我作为父母使用的滚动视图。 如果我删除scrollview,一切都恢复正常。我已经包含了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>

1 个答案:

答案 0 :(得分:0)

不是一次性将所有文本视图和单选按钮结构化在一起,将它们组织为行可能更有意义,然后在行中使用相同的布局参数定位复选框。

我听过很多次使用太多观点是禁忌。在Android&lt; 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>