我一直在努力做一些我认为是一个非常常见的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();
这很好用,给了我正在寻找的确切互动。不幸的是,当我的片段从后栈发出时,它就崩溃了。当我的片段被推入后端堆栈时,旧的页眉和页脚视图消失了,与视图的其余部分一起丢弃但是如果我尝试添加新的,我会收到一条错误,指出列表适配器已经设置。页眉/页脚视图只能在设置适配器之前设置,不幸的是,它发生在整个组件生命周期循环之前。
我看到该错误的唯一“解决方案”是清空列表适配器,重新添加我的页脚/标题,然后将列表适配器设置为它的原始值。这对我来说是“黑客”,并且让我觉得我一开始并没有正确使用它。
有没有办法以合理的方式运行所需的功能?扩展ListFragment是我问题的一部分吗?滚动我自己的由ListView组成的片段会更好吗?
非常感谢任何和所有帮助。