Как обнаружить превышение в Android ListView?

Я хочу показать/скрыть представление, когда пользователь просматривает список.

Как я могу обнаружить сверхпрокрутку? Есть ли слушатель? Я пробовал OnScrollListener, но он только уведомляет о onScrollStateChanged и onScroll

Ответ 1

Вы можете переопределить метод onOverScrolled, так как он respond to the results of an over-scroll operation.

Ответ 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 = ненулевой и зажатый Y = true → состояние OverScroll при прокрутке снизу вверх

scrollY = ноль и фиксированныйY = 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
        }
    }
}