Имея 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 экран вниз, независимо от размера данных (строка ) Предметы?