RelativeLayout layout_centerInParent和layout_below问题

时间:2011-05-16 19:51:28

标签: android android-layout relativelayout

我在布局相对布局时遇到问题。这是测试代码

<RelativeLayout
    android:background="@drawable/bg_controls"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:id="@+id/controls_layout"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/controls_layout" />

</RelativeLayout>

结果是enter image description here

如果我删除android:layout_centerInParent =“true”一切正常。为什么RelativeLayout不能这样做呢?

UPD:预期的结果是LinearLayout下会出现第二个按钮。

4 个答案:

答案 0 :(得分:1)

我遇到了一个非常类似的问题,我的中心View被指定为layout_centerInParent,我的所有其他观点都与此相关,但有一些View s无法在编辑器或设备上正确呈现。

我发现我的中心View本身,指定为layout_centerInParent,仍然必须与其他东西相关(因为听起来不直观)。所以我在layout_below之上做了一些事情,即使它上面的View没有与任何东西对齐,除了下面同一个事件的layout_top之外。但是,一旦我这样做,整个用户界面就会突然出现:)

答案 1 :(得分:1)

当相对布局具有高度wrap_content时会发生这种情况。如果您可以为相对布局提供固定高度,则layout_below centerInParent项可以正常工作。否则,相对布局假定第一个项目(此处为controls_layout)的位置在通常位置(即没有centerInparent)并对齐它下面的第二个项目。

解决方案:

  1. 为相对布局而不是wrap_content指定固定高度 或
  2. 将两个按钮保持为垂直方向的线性布局,并将centerInParent设置为线性布局

答案 2 :(得分:0)

您使用的是API级别3(1.5)吗? RelativeLayouts非常古怪1.5。给你的按钮一个id是个好主意。

答案 3 :(得分:0)

您是否尝试在实际设备上运行此功能?我在eclipse中预览布局时遇到了这个问题,但是当我在设备上运行它时,它按预期工作了