当前位置: 首页 > 知识库问答 >
问题:

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

公冶经纶
2023-03-14

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

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

我不想向 ListView 添加下边距,我只需要最后一项的边距。

我认为这样做的方法是:

一种黑客行为——在ListView中添加带有空文本视图的页脚。但是页脚是相当不稳定的东西,它们通常在notifyDataSetChanged之后消失,并且没有办法恢复它们

我要求设计师添加透明像素到底部背景资源。不幸的是,在这种情况下,垂直居中被完全破坏。例如,有9个补丁是这样的:

布局如下:

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

结果:

如您所见,居中不起作用。不幸地(顺便说一句,如果指定这个9patch作为TextView的背景,居中效果很好。如果你知道任何解释这一点的文章,请让我知道。)

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

已经有了一个想象的方法——用特定的位图和边距构造一些可绘制的XML。根据drawables的概念,这应该是可能的,但我找不到实现。可能有人知道?

还有其他想法吗?

共有3个答案

步兴德
2023-03-14

如果需要,您也可以从代码中执行,例如,在这里我会对不同的情况做出反应:

   if(s.toString().length()>0)
   {
      contacts_lv.setClipToPadding(false);
      contacts_lv.setPadding(0,0,0,270*screenDensity);
   }
   else
   {
      contacts_lv.setClipToPadding(true);
      contacts_lv.setPadding(0,0,0,0);
   }
狄承望
2023-03-14

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

TextView empty = new TextView(this);
empty.setHeight(150);
listview.addFooterView(empty);
陆飞捷
2023-03-14

在您的ListView中,设置paddingBottomclipToPadd="false"

  <ListView
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:paddingBottom="8dp"
      android:clipToPadding="false"
      android:scrollbarStyle="outsideOverlay"/>

>

  • 这也适用于 RecyclerView

    如果您希望滚动条不会溢出到填充区域,请仅使用android:scrollbarStyle=“outsideOverlay”。

  •  类似资料:
    • 问题内容: 下面有一个for循环代码。我通过调用一个自定义显示函数发现aBook arrayList对象仅添加了最后一个类对象三次。为什么会这样呢? 这是我的LiFiAddressBook类 } 问题答案: 由于使用static关键字,每次 调用构造函数时,旧值都会被新值覆盖,并且在打印列表中的元素时,LiFiAddressBook类的对象变量将指向相同的对象。因此打印相似的对象。 需要明确的是,

    • 我正在尝试使用在中的最后一个元素行下面添加间距。为此,我使用了自定义的并在其最后一个元素时进行底部填充,如下所示: 这将对正确工作。只是在的情况下,它是有问题的。 如果底部有并且需要最后一行中的项目滚动到上方,以便它们可见,那么它非常有用。

    • 我需要填充一个json文件,现在我有如下内容: 我需要添加另一个“元素”。我的第一步是使用,现在我需要添加新元素。我想我必须使用添加另一个元素,我尝试了以下方法: 但是当我尝试做时,我得到了错误"对象没有方法推送",我认为我做了一些非常错误的事情,因为我没有告诉任何地方的"元素"。 我该怎么做? 编辑:对不起,我脑子里有很多困惑。 我认为从,但我首先得到了我在JSON中输入的内容。 用数组代替对象

    • 我有个文件名测试。json 我读了这个文件,我想得到这个 我要阅读和构建的代码 从JSON的那句话中,我得到了 com.google.gson.stream.MalformedJsonException:使用JsonReader.setLenient(true)接受格式错误的JSON 我的绳子坏了? 我试过了 我知道这不是JSON数组。

    • 问题内容: 我想将通过JSOn格式的URL接收的数据动态附加到我的列表视图中。但是我不知道它是如何工作的。 移动网站以以下格式检索对象: 在.html中,我有一个listview和一个函数,在其中尝试附加接收到的数据。我只展示身体。 也许这很容易,但是我是Web编程的新手,我不知道该如何附加检索到的数据。 有人可以帮我吗? 问题答案: 这是上述解决方案的jsfiddle(还有一个使用 代替的示例

    • 有人能帮忙吗?我正在尝试获取代表动态生成的智能卡(例如633597015500042010)的按钮的最后一个xpath元素,然后单击它。我尝试了以下方法,但仍然找不到解决方法。我打算捕获的按钮的名称是“Select”。 driver.findElement(by.xpath(“//div[@class='select-item']/div)[last()]”).click();