我正在学习一个教程,但我不明白为什么我在相对布局中包含的列表视图中应用的边距不会影响我在设备上测试它时的外观。但是,如果我将所有内容放在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>
这是这种布局的结果:
答案 0 :(得分:1)
边距在视图之外,ListView默认使用AbsListView.LayoutParams,它不包括任何边距支持,只有高度和宽度,这就是为什么,它只是忽略了边距的参数值。尝试使用填充作为相对布局