Я работаю над отладкой некоторых элементов обработки touch на Android, и пытаюсь понять, почему MotionEvent, отправленный на мой View onTouchListener
, содержит действие отмены. Я не смог найти документацию по его причине и надеялся, что кто-то может указать мне в правильном направлении для отладки этой проблемы - коды ошибок, исходный код или некоторые общие знания.
Что вызывает MotionEvent.ACTION_CANCEL в Android?
Ответ 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()
Ответ 4
Когда перетаскивание выйдет из строя, вы получите ACTION_CANCEL