将空白空间添加到ListView的末尾

时间:2010-10-17 14:39:42

标签: android listview

我有一个ListView,每个字母都有字母标题。我还有一个索引函数,将字母标题放在屏幕顶部。

我的问题是当我到达列表的末尾时,setSelection无法将最后几个标题置于顶部,因为它不会滚动到列表的末尾。

我的问题是:有没有办法根据屏幕尺寸在屏幕的末尾添加空格?我想滚动,直到列表中的最后一项位于listView的顶部。

3 个答案:

答案 0 :(得分:82)

添加空间的最简单方法是在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"/>

这有效地将空白区域添加到顶部和底部,但在滚动视图时隐藏空间。

答案 1 :(得分:5)

请尝试以下操作:

View footer = new View(getActivity());
footer.setLayoutParams( new AbsListView.LayoutParams( LayoutParams.FILL_PARENT, 100 ));
mListView.addFooterView(footer, null, false);

答案 2 :(得分:2)

我假设你使用BaseAdapter的扩展来填充你的ListView?

可能有一种内置的方式来做你要求的事情,但我不知道一个。如果您最终自己创建它,那么这种方法如何:

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

你需要摆弄EXTRA常数以查看最佳值。