Android recyclerview disable scrolling animation

Как отключить прокрутку RecyclerView?

Я не могу отключить прокрутку в RecyclerView . Я попытался вызвать rv.setEnabled(false) но я все еще могу прокручивать.

Как отключить прокрутку?

Для этого вы должны переопределить layoutmanager вашего recycleview. Таким образом, он будет отключать прокрутку, ни одну из других функций. Вы по-прежнему сможете обрабатывать клики или любые другие события касания. Например:-

Оригинал:

Здесь, используя флаг isScrollEnabled, вы можете временно включать / отключать функции прокрутки вашего временного цикла.

Также:

Просто переопределите существующую реализацию, чтобы отключить прокрутку и разрешить щелчок.

Дополнительная информация в документации

Это немного хакерское решение, но оно работает; Вы можете включить / отключить прокрутку в RecyclerView .

Это пустой RecyclerView.OnItemTouchListener крадущий каждое событие касания, таким образом отключая целевой RecyclerView .

Это работает для меня:

Расширьте LayoutManager и переопределите canScrollHorizontally() и canScrollVertically() чтобы отключить прокрутку.

Имейте в виду, что вставка элементов в начале не будет автоматически прокручиваться назад до начала, чтобы обойти это:

Другой альтернативой является setLayoutFrozen , но он поставляется с рядом других побочных эффектов.

Я знаю, что у этого уже есть принятый ответ, но решение не учитывает прецедент, с которым я столкнулся.

Мне определенно нужен элемент заголовка, который по-прежнему доступен для кликов, но отключил механизм прокрутки RecyclerView. Это может быть выполнено с помощью следующего кода:

Вы также можете установить android:nestedScrollingEnabled=»false» в xml:

Почему-то ответ @Alejandro Gracia начинает работать только через несколько секунд. Я нашел решение, которое мгновенно блокирует RecyclerView:

Создать класс, который расширяет класс RecyclerView

Это отключит событие прокрутки, но не события кликов

Используйте это в своем XML, чтобы сделать следующее:

Переопределите onTouchEvent () и onInterceptTouchEvent () и верните false, если вам вообще не нужен OnItemTouchListener. Это не отключает OnClickListeners ViewHolders.

Читайте также:  Fbreader djvu plugin для андроид

Я боролся в этой проблеме в течение некоторого часа. Поэтому я хотел бы поделиться своим опытом. Для решения layoutManager это нормально, но если вы хотите повторно использовать прокрутку, то переработчик вернется к началу.

Лучшее решение пока (для меня, по крайней мере) использует метод @Zsolt Safrany, но добавляет getter и setter, поэтому вам не нужно удалять или добавлять OnItemTouchListener.

Вот как я это сделал с привязкой данных:

Вместо «true» я использовал логическую переменную, которая была изменена в зависимости от состояния, так что просмотр recycler переключился бы между отключением и включением.

Источник

Оцените статью