我有一个相对布局,看起来像下面的
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/profile_pic"
android:layout_width="@dimen/small_size"
android:layout_height="@dimen/small_size"
android:layout_alignParentLeft="true"
android:src="@drawable/some_image" />
<ImageView
android:id="@+id/extra_pic"
android:layout_width="@dimen/large_size"
android:layout_height="@dimen/large_size"
android:layout_alignBottom="@id/profile_pic"
andorid:layout_toRightOf="@id/profile_pic" />
</RelativeLayout>
我需要将其保留为相对布局,因为原始布局文件看起来比这更复杂。
viewGroup的高度仅包裹profile_pic
高度,并且由于extra_pic
高度较大,因此会被切断。如何将relativeLayout设置为wrap_content,以便将最大项包装在布局中?
我希望它看起来像:
目前的情况
答案 0 :(得分:1)
看起来这是RelativeLayout
的限制。每当您使用wrap_content
来定义RelativeLayout
的大小时,肯定会有怪癖。如果您深入研究source code,则容器的高度似乎取决于任何子视图的bottom
的最大值。由于较大的视图与较小视图的底部对齐,较大的视图bottom
与较小的视图的bottom
相同,因此容器的高度不会延长。
如果没有看到完整的布局,我无法给你一个确切的解决方案,但你可能会尝试这样的事情:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:id="@+id/spacer"
android:layout_width="@dimen/large_size"
android:layout_height="@dimen/large_size"
android:visibility="INVISIBLE" />
<ImageView
android:id="@+id/profile_pic"
android:layout_width="@dimen/small_size"
android:layout_height="@dimen/small_size"
android:layout_alignBottom="@id/spacer"
android:layout_alignParentLeft="true"
android:src="@drawable/some_image" />
<ImageView
android:id="@+id/extra_pic"
android:layout_width="@dimen/large_size"
android:layout_height="@dimen/large_size"
android:layout_alignBottom="@id/profile_pic"
android:layout_toRightOf="@id/profile_pic" />
</RelativeLayout>
不可见的间隔视图占据较大的高度,然后其他组件与间隔物对齐。这会导致RelativeLayout为您提供合适的高度。