我有一个ListView,每个字母都有字母标题。我还有一个索引函数,将字母标题放在屏幕顶部。
我的问题是当我到达列表的末尾时,setSelection无法将最后几个标题置于顶部,因为它不会滚动到列表的末尾。
我的问题是:有没有办法根据屏幕尺寸在屏幕的末尾添加空格?我想滚动,直到列表中的最后一项位于listView的顶部。
答案 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
常数以查看最佳值。