Я ищу способ прокрутки, RecyclerView
чтобы показать выбранный элемент сверху.
В ListView
я был в состоянии сделать это с помощью scrollTo(x,y)
и получить в верхней части элемента , который нужно быть по центру.
Что-то вроде:
@Override
public void onItemClick(View v, int pos){
mylistView.scrollTo(0, v.getTop());
}
Проблема в том, что RecyclerView
возвращает scrollTo
метод при использовании этого метода, говоря
RecyclerView не поддерживает прокрутку до абсолютной позиции
Как прокрутить a, RecyclerView
чтобы поместить выбранный элемент в верхнюю часть представления?
Если вы ищете вертикальный менеджер LinearLayout, вы можете добиться плавной прокрутки с помощью пользовательского
LinearSmoothScroller
:используйте экземпляр layoutmanager в представлении recycle, а затем вызов сгладит
recyclerView.smoothScrollToPosition(pos);
прокрутку до выбранной позиции в верхней части представления переработчикаисточник
getHorizontalSnapPreference()
в TopSnappedSmoothScroller для горизонтальных списков.RecyclerView
? Который должен сказать: Это не похоже на работу для последнего пункта - независимо отSNAP_TO_START
техRecyclerView
только свитки , пока элемент не становится видимым в нижней части, но не двигается весь путь вверх. Есть идеи как этого добиться? (Я работал над этим, устанавливая пользовательские отступы,RecyclerView
но это не кажется правильным ...)// Прокручиваем элемент поз
источник
Вам просто нужно позвонить
recyclerview.scrollToPosition(position)
. Это хорошо!Если вы хотите вызвать его в адаптере, просто позвольте вашему адаптеру иметь экземпляр recyclerview или действие или фрагмент, который содержит recyclerview, чем реализует метод
getRecyclerview()
в них.Я надеюсь, что это может помочь вам.
источник
то же самое с регулятором скорости
источник
Попробуйте то, что сработало для меня круто!
Создать переменную
private static int displayedposition = 0;
Теперь о позиции вашего RecyclerView в вашей деятельности.
Поместите это утверждение туда, где вы хотите разместить прежний сайт, отображаемый в вашем представлении.
Ну вот и все, у меня все работало нормально \ о /
источник
просто вызовите этот метод просто:
вместо того:
источник
что я сделал, чтобы восстановить положение прокрутки после обновления RecyclerView на нажатой кнопке:
получение смещения первого видимого элемента сверху до создания объекта linearLayoutManager и после его создания вызывается scrollToPositionWithOffset объекта LinearLayoutManager.
источник
Я не знаю, почему я не нашел лучший ответ, но это действительно просто.
Нет ошибок
Создает анимацию
источник
прокрутка в определенной позиции,
и это мне очень помогло. щелкнув слушатель вы можете получить позицию в вашем адаптере
источник
источник
Ни один из ответов не объясняет, как показать последний элемент (ы) вверху. Таким образом, ответы работают только для элементов, у которых еще есть элементы над или под ними, чтобы заполнить оставшиеся
RecyclerView
. Например, если есть 59 элементов и выбран 56-й элемент, он должен быть вверху, как на рисунке ниже:Мы могли бы обрабатывать эти случаи, используя
linearLayoutManager.scrollToPositionWithOffset(pos, 0)
и дополнительную логику вAdapter
изRecyclerView
- путем добавления пользовательской маржи ниже последнего элемента (если последний элемент не виден , то это означает , что есть достаточно места НаполнитеRecyclerView
). Пользовательское поле может быть разницей между высотой корневого вида и высотой элемента. Итак, вашAdapter
запросRecyclerView
будет выглядеть следующим образом:источник
В моем случае у меня
RecyclerView
есть такой верхЗатем для прокрутки элемента вверх, мне нужно
источник
Если ваше
LayoutManager
этоLinearLayoutManager
вы используетеscrollToPositionWithOffset(position,0);
на нем , и это сделает ваш пункт первого видимый элемент в списке. В противном случае, вы можете использоватьsmoothScrollToPosition
наRecyclerView
непосредственно.В итоге я использовал приведенный ниже код.
источник
Я использую код ниже для плавной прокрутки элемента (thisView) к вершине.
Это работает также для GridLayoutManager с видами различной высоты:
Кажется, работает достаточно хорошо для быстрого решения.
источник
thisPosition
?