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

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

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

1 ответ

Решение

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

Просто чуть более полный ответ

@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
       }    
}

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
        }
    }
}
Другие вопросы по тегам