Привет всем, может кто-нибудь помочь в кастомным скроллвью, мне нужно было отследить когда человек делает свайп вправо/влево находясь в конце списка чтобы отобразить ui элемент (что-то типо swipe to refresh layout только горизонтальый и работает в обе стороны) Использовал GestureDetector, свайпы отслеживаются и все хорошо, но скролл перестал слушать события на клик от дочерних элементов и я не могу понять как ему это вернуть
В скроле храню ячейки таблицы, на каждой есть свой обработчик клика
override fun onTouchEvent(ev: MotionEvent): Boolean {
when (ev.action){
MotionEvent.ACTION_DOWN -> {
performClick()
x1 = ev.x
y1 = ev.y
}
MotionEvent.ACTION_UP -> {
val diffX = x1.minus(ev.x)
val diffY = y1.minus(ev.y)
if (abs(diffX) > abs(diffY)){
if (abs(diffX) > MIN_DISTANCE && FINAL_SCROLL_POS){
if (diffX < 0){
Log.e("SCROLL direction", "RIGHT")
scrollViewListener!!.onRightScroll()
}else {
Log.e("SCROLL direction", "LEFT")
scrollViewListener!!.onLeftScroll()
}
vibrate()
}
}
}
}
return super.onTouchEvent(ev)
}
Клик перестает работать после переопределения метода onInterceptTouchEvent, если же его не переопределять то значение x1 (позиция первого нажатия на экран) всегда будет равна 0.0
override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean {
return if (gestureDetector!!.onTouchEvent(ev)) true else super.onInterceptTouchEvent(ev)
}