How to detect overscroll in Android ListView?

前端 未结 3 1042
暗喜
暗喜 2021-01-08 00:07

I\'d like to show/hide a view when the user over scroll the listview.

How can I detect the over-scroll? Is there any listener? I\'ve tried OnScrollListener

相关标签:
3条回答
  • 2021-01-08 00:24

    Just a little more complete answer

    @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
           }    
    }
    
    0 讨论(0)
  • 2021-01-08 00:26

    You can override the method onOverScrolled, as it respond to the results of an over-scroll operation.

    0 讨论(0)
  • 2021-01-08 00:39

    scrollY = non-Zero and clampedY = true --> OverScroll state occure While Scrolling bottom to top

    scrollY = Zero and clampedY = true --> OverScroll state occure While Scrolling top to bottom

    so

    @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
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题