Как отключить прокрутку 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.
Я боролся в этой проблеме в течение некоторого часа. Поэтому я хотел бы поделиться своим опытом. Для решения layoutManager это нормально, но если вы хотите повторно использовать прокрутку, то переработчик вернется к началу.
Лучшее решение пока (для меня, по крайней мере) использует метод @Zsolt Safrany, но добавляет getter и setter, поэтому вам не нужно удалять или добавлять OnItemTouchListener.
Вот как я это сделал с привязкой данных:
Вместо «true» я использовал логическую переменную, которая была изменена в зависимости от состояния, так что просмотр recycler переключился бы между отключением и включением.
Источник