向列表视图添加边距

Adding margins to listview

我正在学习教程,但我不明白为什么我应用到包含在相对布局中的列表视图的边距不会影响我在设备上测试它时的外观。但是,如果我将所有内容都放在 LinearLayout 容器中,它看起来应该是这样。我不明白为什么没有这个 LinearLayout 布局就不能工作。

这是我的 listView 布局代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
          android:background="@android:color/transparent">
<RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
    android:layout_marginLeft="@dimen/inbox_horizontal_margin"
    android:layout_marginRight="@dimen/inbox_horizontal_margin"
    android:layout_marginTop="@dimen/inbox_vertical_margin"
    android:background="@android:color/white">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/messageIcon"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/message_list_item_vertical_margin"
        android:paddingBottom="@dimen/message_list_item_vertical_margin"
        android:layout_alignParentStart="true"
        android:contentDescription="@string/content_desc_message_icon"
        android:src="@drawable/ic_action_picture"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Medium Text"
        android:id="@+id/senderLabel"
        android:layout_centerVertical="true"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:layout_toRightOf="@+id/messageIcon"
        android:layout_toEndOf="@+id/messageIcon"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text=" created at: 03.17.15"
        android:id="@+id/createdAtLabel"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@+id/senderLabel"
        android:layout_toEndOf="@+id/senderLabel"/>
</RelativeLayout>
</LinearLayout>

这是代码的结果:

这是没有 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"
    android:layout_marginLeft="@dimen/inbox_horizontal_margin"
    android:layout_marginRight="@dimen/inbox_horizontal_margin"
    android:layout_marginTop="@dimen/inbox_vertical_margin"
    android:background="@android:color/white">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/messageIcon"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/message_list_item_vertical_margin"
        android:paddingBottom="@dimen/message_list_item_vertical_margin"
        android:layout_alignParentStart="true"
        android:contentDescription="@string/content_desc_message_icon"
        android:src="@drawable/ic_action_picture"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Medium Text"
        android:id="@+id/senderLabel"
        android:layout_centerVertical="true"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:layout_toRightOf="@+id/messageIcon"
        android:layout_toEndOf="@+id/messageIcon"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text=" created at: 03.17.15"
        android:id="@+id/createdAtLabel"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@+id/senderLabel"
        android:layout_toEndOf="@+id/senderLabel"/>
</RelativeLayout>

这是此布局的结果:

边距在视图之外,ListView 默认使用 AbsListView.LayoutParams,它不包括任何边距支持,只有高度和宽度,这就是为什么它只是忽略边距的参数值。尝试为您的相对布局使用填充