向ListView最后一个元素添加底部边距

dar*_*rja 76 android centering android-drawable

我需要添加添加具有复杂项目背景的ListView:顶部和底部的偶数/奇数和圆角不同.它看起来像这样:

ListView顶部

我已经通过level-list实现了所有这些东西,但还有一件事我想做.现在底部项目靠近屏幕的底部.最好添加一些空间.

ListView底部看起来不太好

我不想为ListView添加底部边距,我只需要最后一项的保证金.

我看到这样做的方式:

页脚

一种破解 - 将带有空TextView的页脚添加到ListView.但是页脚是非常不稳定的东西,它们通常会在notifyDataSetChanged之后消失,并且无法让它们恢复

带透明像素的图像

我让设计师向底部背景资源添加透明像素.不幸的是,在这种情况下,垂直居中完全被打破.例如,有9patch像这样:

9patch

和这样的布局:

<?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="match_parent"
        >
    <!-- View with background with transparent pixels on bottom -->
    <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"
                  android:id="@+id/item"
                  android:background="@drawable/some_bgr"
                  android:padding="10dp"
            >
        <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"
                  android:text="Title"
                  android:layout_gravity="center"
                  android:textSize="18sp"
                />
        <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
                  android:text="Detail"
                  android:layout_gravity="center"
                  android:textSize="18sp"
                />
    </LinearLayout>

    <!-- Just for marking place took by view -->
    <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"
                 android:layout_below="@id/item"
                 android:background="#88ff55"
            />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

结果:

结果

如您所见,居中不起作用.不幸.(顺便说一句,如果将此9patch指定为TextView的背景,则居中工作效果很好.如果你知道任何文章,请解释一下,请告诉我.)

在Adapter实现中添加最后一项的下边距

这应该工作,但由于未知的原因,我仍然无法使它工作.我不喜欢这种方式,因为我不喜欢修改代码中的维度.

所以

已经存在想象的方式 - 使用特定的位图和边距构造一些XML drawable.根据drawables概念应该是可能的,但我找不到实现.可能有人知道吗?

还有其他想法吗?

clo*_*ith 265

在你的ListView,设置paddingBottomclipToPadding="false".

  <ListView
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:paddingBottom="8dp"
      android:clipToPadding="false"
      android:scrollbarStyle="outsideOverlay"/>
Run Code Online (Sandbox Code Playgroud)
  • 这也适用于RecyclerView.

  • android:scrollbarStyle="outsideOverlay"在您希望滚动条不会溢出到填充区域时使用.

  • 不要忘记添加`android:scrollbarStyle ="outsideOverlay"`所以你的滚动条不会留在填充内 (11认同)
  • @AndroidBeginner我不明白你想要什么.这正是它的作用. (2认同)

ful*_*oon 7

在列表中添加一个空页脚,如下所示:

TextView empty = new TextView(this);
empty.setHeight(150);
listview.addFooterView(empty);
Run Code Online (Sandbox Code Playgroud)