我的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:
<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>
答案 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>