RecyclerView - прокрутка на один экран вверх или вниз (не в зависимости от положения адаптера) - PullRequest
1 голос
/ 10 января 2020

Имея RecyclerView с элементами с (очень) различной высотой, как я могу прокрутить 1 экран вниз (или вверх)? Таким образом, после прокрутки 1 экрана вниз отображаются данные, которые были чуть ниже данных на текущем экране.

В качестве экстремального примера: если у меня очень большой первый элемент данных и позиция y прокрутки равна 0, тогда прокрутка на 1 экран вниз означает в этом случае отображение следующей / оставшейся части данных первый пункт.

Есть несколько способов, которые могут помочь.

  • Использование положения адаптера. Это не работает, когда элементы (в адаптере) довольно большие.
  • Использование в процентах. Например, используя следующие методы с ScrollOffset, ScrollExtent и ScrollRange. ОК, как использовать этот процент? Основан ли процент на среднем размере / высоте элемента данных? Смотрите ниже списка.
  • Использование scrollTo (0, y). Как найти следующий «у»?

Методы ScrollOffset, Extent и Range:

int offset = recyclerView.computeVerticalScrollOffset();
int extent = recyclerView.computeVerticalScrollExtent();
int range = recyclerView.computeVerticalScrollRange();
float percentage = (100.0f * offset / (float)(range - extent));

Итак, есть ли способ прокрутить 1 экран вниз, независимо от размера данных (строка ) Предметы?

1 Ответ

1 голос
/ 10 января 2020

Прокрутка по высоте вида должна это делать, нет? Быстро протестировано на представлении переработчика внутри прокрутки.

Т.е. view.post(() -> view.scrollBy(0, view.getHeight()));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...