Android RelativeLayout:除非视图太小,否则如何在屏幕上居中显示某些内容

Android RelativeLayout:除非视图太小,否则如何在屏幕上居中显示某些内容,android,android-layout,Android,Android Layout,我试图实现一个非常简单的布局,但当高度变得太小(横向模式)时,我无法让它很好地工作 我想要的是在屏幕上水平和垂直地将A居中,并将B放置在A上方的空间中(或者与顶部对齐,或者在A上方,我并不介意)。这在肖像画中效果很好(见图1)。 当高度太小时,我希望A不要与B重叠(如图2所示)。我希望它保持在下方(考虑B的底部边距),并使用ScrollView来完成它的工作(图3) 简言之,我希望A在屏幕中居中,除非B(及其上/下边距)不能超过A 我试图通过将A和B放在ARelativeLayout中来实现这

我试图实现一个非常简单的布局,但当高度变得太小(横向模式)时,我无法让它很好地工作

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

简言之,我希望A在屏幕中居中,除非B(及其上/下边距)不能超过A

我试图通过将A和B放在A
RelativeLayout
中来实现这一点,其中A居中,B与上边距对齐(我还尝试了B与下边距对齐)。所有这些都包装在一个
滚动视图中
。 在这两种情况下,重叠是不可避免的。(见下面的XML)

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

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

android:layout_below="@id/recommend_text"

你可以看看碎片。然而,android的最佳实践是,每个尺寸都有一个布局,你想支持…不要使用
RelativeLayout
,而是使用
LinearLayout
垂直布局orientation@Kartheeks我在问题中提到,这不能起作用,因为我希望我的A视图在屏幕上垂直居中。因此,对于A,权重为1的
LinearLayout
不是解决方案。如果你知道如何使用
线性布局
,我很高兴你能与我分享(出于好奇,即使我现在已经找到了解决方案)。老兄,这太简单了。我试着把B放在A上面,但不是相反。。。谢谢!:)如果对你有帮助的话,别忘了打勾。我试过了,但我得等7分钟,我会尽快做;)因此,正如我所看到的,在这里,居中属性优先于下面的
layout_
。有没有列出优先事项的清单?我找不到任何相关文件。但是,一旦创建了一些相关布局,就应该很容易地确定优先级顺序。