4

我一直在努力做一些我认为对 android ListView 很常见的请求,在我的具体情况下,这个 ListView 被用作 ListFragment 的一部分。

我希望列表上方和下方有一个空白填充区域,当与列表交互时,它会随着列表项一起上下滚动。

我环顾四周,不仅找不到答案,而且几乎没有人问这个问题,这让我想知道我是否错过了什么。

我的第一次尝试是:

 <ListView android:id="@id/android:list"
    android:paddingTop="16dip"
    android:paddingBottom="16dip"
    android:clipToPadding="false"...

这提供了所需的填充,但不幸的是,“clipToPadding”属性并没有按照它在锡上所说的那样做,当滚动列表时,项目从 ListView 的可见区域的顶部和底部被剪掉 16dip,而不是我在看为了。知道为什么它仍然被剪辑吗?

我的第二次尝试涉及通过 ListView api 以编程方式将透明页眉和页脚视图添加到列表中:

addHeaderView();
addFooterView();

这很好地工作,并为我提供了我正在寻找的确切交互。不幸的是,当我的片段从后台堆栈中出来时,它就崩溃了。旧的页眉和页脚视图消失了,当我的片段被推入后台堆栈时,与视图的其余部分一起被丢弃,但是如果我尝试添加新的,我会收到一个错误,指出列表适配器已设置。只能在设置适配器之前设置页眉/页脚视图,不幸的是,这发生在整个组件生命周期循环之前。

我看到的唯一“解决方案”是清空列表适配器,重新添加页脚/页眉,然后将列表适配器设置为原始值。这对我来说是“hack”,让我觉得我一开始就没有正确使用它。

有没有办法让所需的功能以合理的方式工作?扩展 ListFragment 是我的问题的一部分吗?滚动我自己的由 ListView 组成的片段会更好吗?

任何和所有的帮助将不胜感激。

4

0 回答 0