У меня огромный RecyclerView
с GridLayoutManager
.Иногда отображается небольшое количество элементов, и в этом случае мне нужно отключить прокрутку.Прокрутка должна быть включена только тогда, когда в RecyclerView слишком много элементов для показа, поэтому необходима прокрутка.
Почему? Потому что, когда пользователь нажимает достаточно быстро на элементах, щелчокслушатель не срабатывает.Пользователь случайно перемещает RecyclerView немного.Recycler's onTouchListener
получает EVENT_MOVE
и использует событие.
Я пытался создать собственный GridLayoutManager с переопределенным методом canScrollVertically()
:
override fun canScrollVertically(): Boolean {
return super.canScrollVertically() && isScrollEnabled
}
Я использую эту функцию, чтобы проверить,RecyclerView можно прокручивать:
fun RecyclerView.isScrollableVertically(): Boolean {
return computeVerticalScrollRange() > height
}
Затем я обновляю поле isScrollEnable:
val isScrollableVertically = items_list.isScrollableVertically()
(category_items_list.layoutManager as CustomGridLayoutManager).setScrollEnabled(isScrollableVertically)
Но даже когда есть много элементов, которые нужно показать, items_list.isScrollableVertically()
возвращает false.
Я пытаюсь отключить прокрутку, когда достаточно места для всех предметов, но я не нашел подходящего способа сделать это в течение дня.Буду признателен за любую помощь!