使用Android RelativeLayout叠加的元素

时间:2014-10-16 12:02:23

标签: android android-layout

我有以下Android布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="16dp"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/slideTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dip"
        android:padding="@dimen/px20"
        android:text="@string/login_message"
        android:textSize="@dimen/px25"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/slideDescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableLeft="@drawable/password"
        android:drawablePadding="@dimen/px20"
        android:drawableStart="@drawable/password"
        android:padding="@dimen/px20"
        android:text="@string/login_message_body"
        android:textSize="@dimen/px20" />

    <TextView
        android:id="@+id/swipeMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="" />

</RelativeLayout>

但是所有元素都位于屏幕顶部,一个在另一个上面,就像它们没有占据任何空间一样。

这不是RelativeLayout documentation中似乎发生的情况,其中所有元素都垂直地位于另一个之下。

这里发生了什么?

3 个答案:

答案 0 :(得分:2)

为了在RelativeLayout中将一个视图放在另一个视图下方,您必须使用layout_below属性并将您想要的视图ID设置为高于指定的视图。但实际上,为了将视图垂直放置在彼此之下,使用方向设置为垂直的LinearLayout更方便

答案 1 :(得分:2)

所以你需要使用其他组件的id来正确对齐。

例如,身份TextView的{​​{1}}也应该有 @+id/slideDescription作为xml的一个属性。

标识为android:layout_below="@+id/slideTitle"的{​​{1}}也应该有 TextView作为xml的一个属性。

答案 2 :(得分:1)

在上面的xml代码中错过了

layout_below。我用那个替换了代码。请使用它。

在相对布局中,elemnet将相对于其他元素进行排列,为了做到这一点,我们应该使用各个视图元素的id值

<强>机器人:layout_below =&#34; @ ID / slideTitle&#34;应放在描述文本视图中  机器人:layout_below =&#34; @ ID / slideDescription&#34;应放在消息文本视图中

为了获得您想要的输出,请使用以下代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="16dp" >

<TextView
    android:id="@+id/slideTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="10dip"
    android:padding="@dimen/px20"
    android:text="@string/login_message"
    android:textSize="@dimen/px25"
    android:textStyle="bold" />

<TextView
    android:id="@+id/slideDescription"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/slideTitle"
    android:drawableLeft="@drawable/password"
    android:drawablePadding="@dimen/px20"
    android:drawableStart="@drawable/password"
    android:padding="@dimen/px20"
    android:text="@string/login_message_body"
    android:textSize="@dimen/px20" />

<TextView
    android:id="@+id/swipeMessage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_below="@id/slideDescription"
    android:text="" />