В моем вертикальном окне повторного просмотра у меня есть несколько горизонтальных представлений, и у меня возникает проблема: когда я хочу прокрутить влево или вправо, если я прокручиваю немного вверх или вниз одновременно, горизонтальная прокрутка не работает .
Таким образом, моя идея состояла в том, чтобы переопределить то, что вверх, вниз, влево и вправо для представления переработчика. Итак, я наткнулся на эту тему: Как определить направление пролистывания между левым / правым и вверх / вниз
Сначала я подумал, что это то, что мне нужно, но потом понял, что это просто переопределение направлений в конце пролистывания (не во время), поэтому я попытался выполнить все вычисления углов во время пролистывания. Я закончил с этим:
var initialX: Float
var initialY: Float
ui_recyclerView?.setOnTouchListener(object: View.OnTouchListener{
override fun onTouch(v: View?, event: MotionEvent?): Boolean {
val action = event?.actionMasked
if (action == MotionEvent.ACTION_DOWN) {
initialX = event.x
initialY = event.y
}
else if(action == MotionEvent.ACTION_MOVE) {
val swipeDirection = GestureUtils.getSwipeDirection(initialX, initialY, event.x, event.y)
if (swipeDirection == GestureUtils.Direction.UP || swipeDirection == GestureUtils.Direction.DOWN) {
return false
}
}
return true
}
})
Это сработало, но тогда у меня больше не было плавной прокрутки (это была очень робота c), и ни один щелчок.
есть встроенная функция с видом переработчика, чтобы ограничить MoveEvent определенным углом? Если нет, то как я могу вернуть эффект плавной прокрутки в обычном окне рециркуляции?
Это бы мне очень помогло!