【发布时间】:2015-02-11 08:40:53
【问题描述】:
当视图在视图结束后被拉出时出现的这个蓝色阴影叫什么?出现或消失时是否触发了侦听器?
我已经实现了https://github.com/maurycyw/StaggeredGridView,我想在这个视图组被过度滚动时加载更多的项目。
【问题讨论】:
当视图在视图结束后被拉出时出现的这个蓝色阴影叫什么?出现或消失时是否触发了侦听器?
我已经实现了https://github.com/maurycyw/StaggeredGridView,我想在这个视图组被过度滚动时加载更多的项目。
【问题讨论】:
它被称为 Overscroller。Listview 具有对过度滚动的内置支持。查看setOverscrollMode 和相关方法setOverscrollHeader 和setOverscrollFooter。 ListView 通过覆盖AbsListView.onOverscrolled; 来使用过度滚动的页眉/页脚,如果你想要不同的行为,你可以自己覆盖它来实现它。
【讨论】:
不幸的是,没有现成的库或功能可以实现这一目标。但是有很好的开放库可以适应。
我的建议是查看SwipeRefreshLayout,它在 Android 支持库中。
这个 ViewGroup 支持从顶部滑动来提供回调,你可能可以调整它来实现底部滑动。
文档:https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html
编辑:
或者,用滚动监听器实现load more 函数相对容易,它只是一个简单的OnScrollListener,代码如下:
private long lastRequestTime = 0;
public void onScroll (AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount){
if (((firstVisibleItem+visibleItemCount) > totalItemCount - 4) &&
(lastRequestTime + 1000 < System.currentTimeMillis())) {
lastRequestTime = System.currentTimeMillis();
// load more ...
}
}
【讨论】: