Как использовать жесты с scrollview - Android? - PullRequest
0 голосов
/ 05 августа 2011

Я использую onFling в своих представлениях, чтобы перейти к следующему действию.Однако это не работает, если представление имеет прокручивающий вид вокруг него.

По-видимому, он поглощает жесты и останавливает мой onFling.

Есть ли какое-либо решение этой проблемы?

Ответы [ 3 ]

4 голосов
/ 05 августа 2011

Вы правы, ScrollView "крадет" жест из-за его наследуемой функциональности.Я работал над этим раньше, применяя onTouchListener к самому ScrollView вместо его непосредственного родительского представления.

2 голосов
/ 05 августа 2011

Проверьте этот фрагмент кода: (переопределить ScrollView dispatchTouchEvent)

public class yourScrollView extends ScrollView{

    //constructors and everything
    //You might want to pass your GestureDetector (of course)

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev){
        super.dispatchTouchEvent(ev);    
        return myGestureDetector.onTouchEvent(ev); 
    }
}
0 голосов
/ 21 апреля 2012

Я не могу комментировать ответы, поэтому я пишу новый.Я обнаружил, что переопределение 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); 
    }
}

Элементы в представлении прокрутки реагируют допредставление не начинает прокручиваться, но жесты определяются правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...