列表项 - 布局崩溃,对象重叠

List item - layout crash, objects overlap

我正在尝试实现列表项的简单布局。 Android工作室的设计图正是我想要的

但是,在运行时,这就是我在每个显示器上所拥有的。

注意最后的TextView@+id/messages_listview_item_modified_date),一般是看不到的;它仅在运行时的特定条件下变得可见。老实说,不确定它是否相关。

这是xml布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:weightSum="1"
              android:orientation="vertical">

  <RelativeLayout
    android:id="@+id/messages_listview_heading"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
      android:id="@+id/messages_listview_item_user_nick"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:layout_toEndOf="@+id/messages_listview_item_user_icon"
      android:text="@string/messages_listview_item_nickname"
      android:textAppearance="?android:attr/textAppearanceListItemSmall"
      android:textColor="#ff99cc00"
      />

    <TextView
      android:id="@+id/messages_listview_item_message_title"
      android:text="@string/messages_listview_item_title"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:textColor="#acacac"
      android:textStyle="bold"
      android:gravity="start"
      android:textAppearance="?android:attr/textAppearanceListItem"
      android:layout_below="@+id/messages_listview_item_user_nick"
      android:layout_toEndOf="@+id/messages_listview_item_user_icon">
    </TextView>

    <TextView
      android:id="@+id/messages_listview_item_date"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentEnd="true"
      android:layout_alignParentTop="true"
      android:text="@string/messages_listview_item_created_date"
      android:textAppearance="?android:attr/textAppearanceListItemSmall"/>

    <ImageView
      android:id="@+id/messages_listview_item_user_icon"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentStart="true"
      android:layout_alignParentTop="true"
      android:contentDescription="@string/messages_listview_item_user_icon"
      android:src="@drawable/icon_user_messages"/>
  </RelativeLayout>

  <TextView
    android:id="@+id/messages_listview_item_message_body"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="start"
    android:text="@string/messages_listview_item_body"
    android:textColor="#acacac"
    android:textAppearance="?android:attr/textAppearanceListItem"
    android:textSize="16sp">
  </TextView>

  <TextView
    android:id="@+id/messages_listview_item_modified_date"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:text="@string/messages_listview_item_edited_date"
    android:layout_gravity="right"
    android:textSize="12sp"
    android:textStyle="italic"/>
</LinearLayout>

线性布局无用
你可以用这个

    <?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="wrap_content">

    <ImageView
        android:id="@+id/messages_listview_item_user_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/messages_listview_item_user_nick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/messages_listview_item_date"
        android:layout_toRightOf="@+id/messages_listview_item_user_icon"
        android:text="nickname"
        android:textAppearance="?android:attr/textAppearanceListItemSmall"
        android:textColor="#ff99cc00" />

    <TextView
        android:id="@+id/messages_listview_item_message_title"
        android:text="title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#acacac"
        android:textStyle="bold"
        android:gravity="start"
        android:textAppearance="?android:attr/textAppearanceListItem"
        android:layout_alignBottom="@+id/messages_listview_item_user_icon"
        android:layout_toRightOf="@+id/messages_listview_item_user_icon"></TextView>

    <TextView
        android:id="@+id/messages_listview_item_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="createddate"
        android:textAppearance="?android:attr/textAppearanceListItemSmall" />


    <TextView
        android:id="@+id/messages_listview_item_message_body"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/messages_listview_item_user_icon"
        android:text="body"
        android:textColor="#acacac"
        android:layout_toLeftOf="@+id/messages_listview_item_modified_date"
        android:textAppearance="?android:attr/textAppearanceListItem"
        android:textSize="16sp"></TextView>

    <TextView
        android:id="@+id/messages_listview_item_modified_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceListItemSmall"
        android:text="editdate"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:textSize="12sp"
        android:textStyle="italic" />
</RelativeLayout>

我从图1中推测正是你想要显示的

问题可能来自您真实设备上的较低 API。 为防止这种情况,请尝试添加以下内容:

+在android:id="@+id/messages_listview_item_user_nick"中添加android:layout_toRightOf="@+id/messages_listview_item_user_icon"

+在android:id="@+id/messages_listview_item_message_title"中添加 android:layout_toRightOf="@+id/messages_listview_item_user_icon"

+在android:id="@+id/messages_listview_item_date"中添加 android:layout_alignParentRight="true"

+在android:id="@+id/messages_listview_item_user_icon"中添加android:layout_alignParentLeft="true"