在ListView末尾添加空白空间

25

我有一个ListView,其中包含每个字母的字母表头。 我还有一个索引功能,将字母标题带到屏幕顶部。

我的问题是当我到达列表结尾时,setSelection无法将最后几个标题带到顶部,因为它无法滚动到列表结尾之后。

我的问题是:是否有一种方法可以根据屏幕大小在屏幕末尾添加空白空间? 我想滚动直到列表中的最后一项在ListView的顶部。

3个回答

89

在xml中添加填充并设置clipToPadding:"false"是添加空间的最简单方法。

对于RecyclerView

<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:clipToPadding="false"/>

针对 ListView

<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:clipToPadding="false"/>

同样适用于 ScrollView

<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:clipToPadding="false"/>

这个特别是在顶部和底部添加空白区域,但当您滚动视图时隐藏该空间。


2
这必须是被接受的答案。 (y) - Arsalan Mehmood
9
别忘了添加 android:scrollbarStyle="outsideOverlay",这样你的滚动条就不会停留在内边距里了。 - gfpacheco
但问题是滚动功能消失了,屏幕变成了完全空白(我设置了android:paddingBottom="800dp"),listview也消失了。 - Logan Guo
@LoganGuo 动态向列表中添加一个项目时,填充滚动会失效。请注意将其放置在第一位置。 - Hemant Shori
最佳答案在这里:https://dev59.com/5mYr5IYBdhLWcg3w1NZY#13366310,配合这个链接https://dev59.com/WGcs5IYBdhLWcg3wh0b7#14560982。 - Johnny

5
尝试以下内容:
View footer = new View(getActivity());
footer.setLayoutParams( new AbsListView.LayoutParams( LayoutParams.FILL_PARENT, 100 ));
mListView.addFooterView(footer, null, false);

3
真是个悲剧。这里是一篇关于如何给ListView添加空格的StackOverflow问题,回答已经有两个踩了。 - Shubham AgaRwal
最佳答案在这里:https://dev59.com/5mYr5IYBdhLWcg3w1NZY#13366310,附带https://dev59.com/WGcs5IYBdhLWcg3wh0b7#14560982。 - Johnny

2

我假设您正在使用BaseAdapter的扩展来填充您的ListView?

也许有一种内置的方法可以做到您所要求的,但是我不知道。如果您最终需要自己创建它,那么可以尝试以下方法:

  • getCount()中返回list.size() + EXTRA
  • 如果getItem()请求不在您的列表中的项目,则修改其返回值为合理值
  • 如果position索引大于您的列表大小,则修改getView()以将给定视图配置为具有与其余视图相同高度的简单水平填充

您需要调整EXTRA常量的值以找到最佳值。


我不同意,@Shayan_Aryan的回答帮助我在30秒内找到了解决方法 :) - Async-
只有在使用BaseAdapter的情况下,才需要提供完整信息。虽然提问者应该负责提供完整信息,但他没有指明使用了什么,所以这是一个有效的答案。 - Async-

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接