Как узнать, что мы прокрутили ScrollView наверх - PullRequest
0 голосов
/ 04 марта 2020

У меня есть фрагмент, NestedScrollView - это макет root. Мне нужно прокрутить середину этого фрагмента, а затем нажать некоторое значение ACTION_BUTTON, которое должно вызвать автоматическую прокрутку до верхней части фрагмента и вызвать какое-либо действие, но только после фрагмента (NestedScrolView) с богатой верхней частью (для плавной анимации).

Я пишу эту функцию:

fun NestedScrollView.scrollTop(callback: () -> Unit) {

    setOnScrollChangeListener { _: NestedScrollView?, _: Int, scrollY: Int, _: Int, _: Int ->

        if (scrollY == 0) {

            callback.invoke()
        }
    }

    fullScroll(View.FOCUS_UP)
}

, но она не работает, если я нажимаю ACTION_BUTTON, когда фрагмент уже наверху.

А также, я получаю некоторое мигание на секунду перед обратным вызовом вызывается.

Итак, каков наилучший способ обработки клика по ACTION_BUTTON в моем случае? Существуют ли функции для NestedScrollView с обратными вызовами, вызываемыми после достижения вершины и как обрабатывать ситуацию, когда я уже нахожусь в верхней части экрана (а OnScrollChangeListener не вызывает)?

1 Ответ

0 голосов
/ 04 марта 2020
scrollView.viewTreeObserver.addOnScrollChangedListener {
    if (!scrollView.canScrollVertically(1)) {
        // Bottom of scroll view.
    }
    if (!scrollView.canScrollVertically(-1)) {
        // Top of scroll view.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...