【发布时间】:2011-04-26 14:26:48
【问题描述】:
我有一个 ListView,每个字母都有按字母顺序排列的标题。我还有一个索引功能,可以将字母标题带到屏幕顶部。
我的问题是当我到达列表末尾时,setSelection 无法将最后几个标题置于顶部,因为它不会滚动到列表末尾。
我的问题是:有没有办法根据屏幕大小在屏幕末尾添加一个空白区域?我想滚动直到列表中的最后一项位于 listView 的顶部。
【问题讨论】:
我有一个 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"/>
这专门在顶部和底部添加空白空间,但在滚动视图时隐藏空间。
【讨论】:
android:scrollbarStyle="outsideOverlay",这样您的滚动条就不会停留在填充内
尝试以下方法:
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 常量来查看最佳值。
【讨论】: