如何将我的 textview 放在另一个下面?

How do I place my textview under another?

我想把我的 textview4 放在下面,我的 sourceNameTextView,但是我看不到 textView4 的文字?我是使用相对布局的新手,有人可以告诉我为什么会这样以及如何解决这个问题吗?我已经尝试在 Whosebug 上阅读一些 post,但找不到任何解决此问题的方法。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"

    android:layout_height="80dp"
    android:layout_marginLeft="18dp"
    android:layout_marginRight="18dp"
    android:layout_marginBottom="18dp"
    android:background="@drawable/gradient"
    android:clickable="true"
    android:focusable="true"
    android:padding="6dip">

    <ImageView
        android:id="@+id/newsThumbnail"

        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_marginRight="6dip"
        android:contentDescription="TODO"
        android:src="@mipmap/ic_launcher" />


    <TextView
        android:id="@+id/newsBody"

        android:layout_width="match_parent"


        android:layout_height="wrap_content"


        android:layout_alignWithParentIfMissing="true"
        android:layout_above="@id/sourceName"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_toRightOf="@id/newsThumbnail"
        android:gravity="center_vertical"
        android:textColor="#FFFFFF"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/sourceName"


        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="10dp"
        android:layout_toEndOf="@id/newsThumbnail"
        android:ellipsize="marquee"
        android:singleLine="true"
        android:text="Description"
        android:textColor="#9A9CA5"
        android:textSize="12sp" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_toEndOf="@id/newsThumbnail"
        android:layout_below="@+id/sourceName"

        android:layout_height="wrap_content"
        android:text="TextViwew.." />


</RelativeLayout>

您看不到 textView4 的原因是您将 android:layout_alignParentBottom="true" 添加到 sourceName TextView,

这意味着您想要将 textView4 的视图对齐到正好位于父视图底部的视图下方。

所以,textView4 会离开屏幕,或者正确地说会离开 RelativeLayout(在它的底部)

要解决此问题,您需要从 sourceName TextView

中删除 android:layout_alignParentBottom="true"

此外,当您进行此更改时,您会注意到 newsBody 现在消失了,那是因为您向其中添加了 android:layout_above="@id/sourceName" 而没有将 sourceName 限制在它的底部。

您现在可以使用:

<?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="80dp"
    android:layout_marginLeft="18dp"
    android:layout_marginRight="18dp"
    android:layout_marginBottom="18dp"
    android:background="@drawable/gradient"
    android:clickable="true"
    android:focusable="true"
    android:padding="6dip">

    <ImageView
        android:id="@+id/newsThumbnail"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_marginRight="6dip"
        android:contentDescription="TODO"
        android:src="@mipmap/ic_launcher" />


    <TextView
        android:id="@+id/newsBody"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignWithParentIfMissing="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_toEndOf="@id/newsThumbnail"
        android:layout_toRightOf="@id/newsThumbnail"
        android:gravity="center_vertical"
        android:textColor="#FFFFFF"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/sourceName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_below="@+id/newsBody"
        android:layout_marginBottom="10dp"
        android:layout_toEndOf="@id/newsThumbnail"
        android:ellipsize="marquee"
        android:singleLine="true"
        android:text="Description"
        android:textColor="#9A9CA5"
        android:textSize="12sp" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/sourceName"
        android:layout_toEndOf="@id/newsThumbnail"
        android:layout_toRightOf="@id/newsThumbnail"
        android:text="TextViwew.." />

</RelativeLayout>

编辑: 也如 Zain 所说,您有 alignParentBottom 导致视图将您的布局推出视图。如果您真的不需要使用它,请尽量避免使用固定高度。但不管怎样,我认为使用 LinearLayout 会让你的生活更轻松,将来编辑代码也会更容易。

您看不到 TextView,因为您在 RelativeLayout 上设置了固定高度。其他布局占用太多 space,因此您的 TextView 低于 sourceName 但不可见,因为它不在布局中。

要更改此设置,您可以添加 wrap_content 作为 RelativeLayout 的高度。然后你将不得不多次使用布局属性来获得你想要的。如果您只对布局的正确部分使用 LinearLayout,您想要实现的目标会更容易。像这样:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="18dp"
    android:layout_marginRight="18dp"
    android:layout_marginBottom="18dp"
    android:clickable="true"
    android:focusable="true"
    android:padding="6dip">

    <ImageView
        android:id="@+id/newsThumbnail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginEnd="6dip"
        android:contentDescription="TODO"
        android:src="@mipmap/ic_launcher" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toEndOf="@id/newsThumbnail"
        android:orientation="vertical">

        <TextView
            android:id="@+id/newsBody"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="#000"
            android:text="NEWS BODY"
            android:textSize="16sp" />

        <TextView
            android:id="@+id/sourceName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:ellipsize="marquee"
            android:singleLine="true"
            android:text="Description"
            android:textColor="#9A9CA5"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/textView4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextViwew.." />
    </LinearLayout>
</RelativeLayout>

结果: