我正在努力实现一个非常简单的布局,但是当高度变得太小时(景观模式),我无法让它工作得很好。
我想要的是在屏幕中水平和垂直居中A,并将B放在A上方的空间中(或者与顶部对齐,或者在A之上,我真的不介意)。这在肖像画中效果很好(见图1)。
当高度太小时,我希望A不与B重叠(在图2中确实如此)。我希望它保持在下面(尊重B的底部边缘)和ScrollView
来完成它的工作(图3)。
简而言之,我希望A在屏幕中居中,除非B(及其顶部/底部边距)不能超过A。
我试图通过将A和B放在RelativeLayout
中来实现这一点,其中A居中,B是alignedParentTop
,顶部边缘(我也尝试B在A上方对齐,底边距)。所有这些都包含在ScrollView
中。
在这两种情况下,重叠都是不可避免的。 (参见下面的XML)
SO上RelativeLayout
重叠问题的大多数解决方案都是指将某些内容放入LinearLayout
中(可能有一些权重)。
如果我想让A在屏幕中居中(而不是在B和底部之间),这些解决方案并不适用。
你知道我怎么能让它发挥作用吗?谢谢你的帮助。
到目前为止,这是我的布局代码:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/wrapper"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<!-- B -->
<TextView
android:id="@+id/recommend_text"
style="@style/TextAppearance.SFR.Title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"
android:layout_marginBottom="40dp"
android:gravity="center_horizontal"
android:text="@string/recommend_screen_text" />
<!-- A -->
<LinearLayout
android:id="@+id/recommend_buttons_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:orientation="vertical" >
<!-- content -->
</LinearLayout>
</RelativeLayout>
</ScrollView>
答案 0 :(得分:1)
在您的视图 A 中,通过在线性布局中添加以下内容,确保其始终低于 B 。
android:layout_below="@id/recommend_text"