Подтвердить что ты не робот

Что вызывает MotionEvent.ACTION_CANCEL в Android?

Я работаю над отладкой некоторых элементов обработки touch на Android, и пытаюсь понять, почему MotionEvent, отправленный на мой View onTouchListener, содержит действие отмены. Я не смог найти документацию по его причине и надеялся, что кто-то может указать мне в правильном направлении для отладки этой проблемы - коды ошибок, исходный код или некоторые общие знания.

4b9b3361

Ответ 1

Это то, что вы ищите:

"ACTION_CANCEL возникает, когда родитель получает владение движением, например, когда пользователь перетаскивает достаточно по представлению списка, чтобы он начал прокручивать вместо того, чтобы позволять вам нажимать кнопки внутри него. Вы можете узнать больше об этом в группе просмотра. Документация: onInterceptTouchEvent. "

Надеюсь, что это ответ, который вы ищете:

Ресурсы: Motion Event, переполнение стека.

Ответ 2

Все, что вам нужно, это позвонить

requestDisallowInterceptTouchEvent(true);

на родительском представлении, как это -

        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            view.getParent().requestDisallowInterceptTouchEvent(true);
            switch(motionEvent.getActio){
            }

            return false; 

         }

Источник: onInterceptTouchEvent, onTouchEvent только видят ACTION_DOWN

Ответ 3

ACTION_CANCEL запускается предком, чтобы уведомить всех потомков о том, что они потеряли управление onTouch, и он будет отвечать за обработку следующего события onTouch. Обычно это происходит, когда потомок возвратил true в методе onTouch или onTouchEvent, но после этого, во время следующего события касания жеста, предок вернул true в onInterceptTouchEvent()

OnTouch поток

Ответ 4

Когда перетаскивание выйдет из строя, вы получите ACTION_CANCEL