我有一个ListView,其中包含每个字母的字母表头。 我还有一个索引功能,将字母标题带到屏幕顶部。
我的问题是当我到达列表结尾时,setSelection无法将最后几个标题带到顶部,因为它无法滚动到列表结尾之后。
我的问题是:是否有一种方法可以根据屏幕大小在屏幕末尾添加空白空间? 我想滚动直到列表中的最后一项在ListView的顶部。
在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"/>
这个特别是在顶部和底部添加空白区域,但当您滚动视图时隐藏该空间。
View footer = new View(getActivity());
footer.setLayoutParams( new AbsListView.LayoutParams( LayoutParams.FILL_PARENT, 100 ));
mListView.addFooterView(footer, null, false);
我假设您正在使用BaseAdapter
的扩展来填充您的ListView?
也许有一种内置的方法可以做到您所要求的,但是我不知道。如果您最终需要自己创建它,那么可以尝试以下方法:
getCount()
中返回list.size() + EXTRA
getItem()
请求不在您的列表中的项目,则修改其返回值为合理值position
索引大于您的列表大小,则修改getView()
以将给定视图配置为具有与其余视图相同高度的简单水平填充您需要调整EXTRA
常量的值以找到最佳值。
android:scrollbarStyle="outsideOverlay"
,这样你的滚动条就不会停留在内边距里了。 - gfpacheco