ListView标题 - 不同的边距

时间:2014-10-10 08:27:05

标签: android listview android-listview margin

我正在创建一个包含listview和其他一些视图的布局。我想完整的布局滚动列表,所以我将其他视图添加为标题。问题是我的listview还有一些余量也适用于标题。

what it currently looks like

我应该更改什么,以便标题看起来像这样 -

What I want

的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的标题有不同的边距?

3 个答案:

答案 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项目一起滚动,你可以采用其他方式:

  1. 从整个ListView中删除边距属性。

  2. 将边距应用于ListView的row_item.xml。为此,您需要将row.xml的外部容器包含在另一个父容器中,比如LinearLayout。因此保证金将起作用。

  3. 希望这有帮助。

答案 1 :(得分:0)

如果您想使用标题,则需要从列表视图中删除边距属性,因为它会影响所有子项并为listItem添加相同的边距。

答案 2 :(得分:0)

我最近遇到了同样的问题,从我在平台上看到的一些人仍然在努力解决这个问题。 基于我的研究看起来listview将覆盖标题边距和填充。

解决方案将是:

  1. 将标题视图组放在另一个视图组中 机器人:layout_height =&#34; WRAP_CONTENT&#34;和android:layout_width =&#34; match_parent&#34;。
  2. 然后将您想要的任何边距应用于内部视图组。
  3. 在您的情况下,标题布局如下所示:

    <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>
    

    希望这有帮助