我正在创建一个包含listview和其他一些视图的布局。我想完整的布局滚动列表,所以我将其他视图添加为标题。问题是我的listview还有一些余量也适用于标题。
我应该更改什么,以便标题看起来像这样 -
的ListView
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_color">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:scrollbars="none"
android:id="@+id/lvProfileAddresses"
android:layout_gravity="center_horizontal"
android:divider="@color/transparent"
android:dividerHeight="10dp"
android:paddingBottom="10dp"
android:clipToPadding="false"
android:cacheColorHint="@color/background_color"
android:fadingEdgeLength="3dp"
/>
</LinearLayout>
标题
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/transparent"
>
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:text="My Addresses"
android:textSize="20sp"
android:padding="10dp"
android:textColor="@color/black"
/>
<Button android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Add New Address"
android:drawableRight="@drawable/small_list_arrow"
android:layout_margin="5dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:background="@drawable/linearlayout_shadow"/>
</LinearLayout>
如何使ListView的标题有不同的边距?
答案 0 :(得分:1)
我认为最好不要在ListView中添加Header,并保留一个单独的Header。可能你可以使用include
。
类似的东西:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_color">
<include
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
layout="@layout/header" />
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:scrollbars="none"
android:id="@+id/lvProfileAddresses"
android:layout_gravity="center_horizontal"
android:divider="@color/transparent"
android:dividerHeight="10dp"
android:paddingBottom="10dp"
android:clipToPadding="false"
android:cacheColorHint="@color/background_color"
android:fadingEdgeLength="3dp" />
</LinearLayout>
你只需要在顶部的ListView中使用一次。所以我认为这将是一个更好的方法。希望它有所帮助。
编辑:
由于你需要在ListView中保留标题以便与ListView项目一起滚动,你可以采用其他方式:
从整个ListView中删除边距属性。
将边距应用于ListView的row_item.xml。为此,您需要将row.xml的外部容器包含在另一个父容器中,比如LinearLayout。因此保证金将起作用。
希望这有帮助。
答案 1 :(得分:0)
如果您想使用标题,则需要从列表视图中删除边距属性,因为它会影响所有子项并为listItem添加相同的边距。
答案 2 :(得分:0)
我最近遇到了同样的问题,从我在平台上看到的一些人仍然在努力解决这个问题。 基于我的研究看起来listview将覆盖标题边距和填充。
解决方案将是:
在您的情况下,标题布局如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="vertical">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop ="40dp" //For Example
android:layout_marginRight="20dp"
android:layout_marginEnd="20dp"
android:background="@color/transparent">
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:text="My Addresses"
android:textSize="20sp"
android:padding="10dp"
android:textColor="@color/black"/>
<Button android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Add New Address"
android:drawableRight="@drawable/small_list_arrow"
android:layout_margin="5dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:background="@drawable/linearlayout_shadow"/>
</LinearLayout>
</LinearLayout>
希望这有帮助