RelativeLayout:除非视图太小,否则如何在屏幕中居中

时间:2014-02-25 09:20:03

标签: android android-layout

我正在努力实现一个非常简单的布局,但是当高度变得太小时(景观模式),我无法让它工作得很好。

我想要的是在屏幕中水平和垂直居中A,并将B放在A上方的空间中(或者与顶部对齐,或者在A之上,我真的不介意)。这在肖像画中效果很好(见图1)。 当高度太小时,我希望A不与B重叠(在图2中确实如此)。我希望它保持在下面(尊重B的底部边缘)和ScrollView来完成它的工作(图3)。

简而言之,我希望A在屏幕中居中,除非B(及其顶部/底部边距)不能超过A。

layout problem

我试图通过将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>

1 个答案:

答案 0 :(得分:1)

在您的视图 A 中,通过在线性布局中添加以下内容,确保其始终低于 B

android:layout_below="@id/recommend_text"