Я не могу комментировать ответы, поэтому я пишу новый.Я обнаружил, что переопределение dispatchTouchEvent
из ScrollView
работает хорошо, но обработчик жестов должен вызываться перед super.dispatchTouchEvent
, поскольку этот метод может каким-то странным образом изменить координаты события.В частности, я видел скачок значения Y при попытке вертикальной прокрутки после конца вида.Вызов обработчика жестов до обработки представления прокрутки позволит ему использовать координаты вида прокрутки, а не внутренние прокручиваемые.
Итак:
public class yourScrollView extends ScrollView{
//constructors and everything
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
return myGestureDetector.onTouchEvent(ev) | super.dispatchTouchEvent(ev);
}
}
Элементы в представлении прокрутки реагируют допредставление не начинает прокручиваться, но жесты определяются правильно.