【问题标题】:How to detect overscroll in Android ListView?如何检测 Android ListView 中的过度滚动?
【发布时间】:2013-10-20 11:44:15
【问题描述】:

我想在用户滚动列表视图时显示/隐藏视图。

如何检测过度滚动?有听众吗? 我试过OnScrollListener,但它只通知onScrollStateChangedonScroll

【问题讨论】:

  • 你到现在都做了什么?请至少发布一些代码。

标签: android listview overscroll


【解决方案1】:

您可以重写方法onOverScrolled,因为它是respond to the results of an over-scroll operation.

【讨论】:

  • 确实如此。您必须对其进行子类化并添加新类而不是常规 ListView
  • 找了这么久,原来这么简单,谢谢!
【解决方案2】:

只是更完整的答案

@Override
protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
    super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);

    View view = (View) getChildAt(getChildCount()-1);
    int diff = (view.getBottom()-(getHeight()+getScrollY()));

    if(diff==0) {
           //overscroll on bottom
       } else {
           //overscroll on top
       }    
}

【讨论】:

    【解决方案3】:

    scrollY = 非零和clampedY = true --> OverScroll 状态发生在从下到上滚动时

    scrollY = 零和clampedY = true --> OverScroll 状态发生在从上到下滚动时

    所以

    @Override
    protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
        super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
    
        if(clampedY){
            if(scrollY==0){
                //over Scroll at top
            }else {
                //over Scroll at Bottom
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      • 2019-06-01
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      相关资源
      最近更新 更多