这个蓝色的阴影叫什么?

7
这个蓝色的阴影在拉到底部时出现叫什么?当它出现或消失时是否会触发监听器?

enter image description here

我已经实现了https://github.com/maurycyw/StaggeredGridView,当这个视图组被过度滚动时,我想要加载更多的项目。

2个回答

6

它被称为Overscroller。Listview内置了对超滚动的支持。请查看setOverscrollMode和相关方法setOverscrollHeadersetOverscrollFooter。ListView通过覆盖AbsListView.onOverscrolled;来使用超滚动头/尾。如果您想要不同的行为,可以通过自己覆盖来实现。


我想要用于ViewGroup..该怎么办? - Rishabh Srivastava
1
请查看以下内容:http://developer.android.com/reference/android/widget/AbsListView.html 以及 http://developer.android.com/training/gestures/scroll.html - williamj949
请查看下拉刷新库! - williamj949
它不起作用...我尝试了所有的方法...甚至实现了一个滚动监听器,但在某些情况下失败了。 - Rishabh Srivastava
你的回答并没有直接帮助到我,但是它给了我一个实现需求的想法。所以我接受了你的回答。非常感谢。 - Rishabh Srivastava

3
很遗憾,目前还没有现成的库或功能来实现这个。但是有一些优秀的开源库可以适应。
我的建议是查看 SwipeRefreshLayout,它在 Android 支持库中。
这个 ViewGroup 支持从顶部滑动以回调函数,你可能可以将其适应到底部滑动实现。
文档: https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html 源代码: https://android.googlesource.com/platform/frameworks/support/+/refs/heads/master/v4/java/android/support/v4/widget/SwipeRefreshLayout.java 编辑: 相反地,使用滚动监听实现加载更多功能相对容易,只需要一个简单的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 ...
      }
}

我使用goonerdroid的想法实现了它...非常感谢你的帮助。我有一个滑动刷新布局来刷新视图。 - Rishabh Srivastava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接