У меня есть просмотрщик, который прокручивает по горизонтали. Я отключил прокрутку в окне реселлера, когда пользователь нажимает на элемент. Теперь, если пользователь попытается прокрутить список при его блокировке, я хочу показать эффект отказов, который он / она не сможет прокрутить дальше.
Например:
У меня есть список из 10 элементов, и пользователь щелкнул 5-й элемент. Теперь прокрутка заблокирована, и когда пользователь пытается прокрутить, я хочу показать эффект отскока, который пользователь не может прокрутить.
Моя работа по отключению прокрутки:
Я использую приведенный ниже метод для блокировки прокрутки:
class RecyclerViewDisabler(isEnable: Boolean = true) : RecyclerView.OnItemTouchListener {
var isEnable = true
init {
this.isEnable = isEnable
}
override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
return if(!isEnable){
rv.scrollState == RecyclerView.SCROLL_STATE_DRAGGING
}else{
false
}
}
override fun onTouchEvent(rv: RecyclerView, e: MotionEvent) {}
override fun onRequestDisallowInterceptTouchEvent(disallowIntercept: Boolean) {}
}
Моя попытка создать эффект отскока:
override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
x = rv.x.toInt()
y = rv.y.toInt()
return if(!isEnable){
if(rv.scrollState == RecyclerView.SCROLL_STATE_DRAGGING){
rv.smoothScrollBy((x + 1000), y) //Bounce front
}else{
rv.smoothScrollBy(x, y) //Bounce back
}
rv.scrollState == RecyclerView.SCROLL_STATE_DRAGGING
}else{
false
}
}
Но это не работает. Как мне этого добиться?