Поймать событие onTouch родителем, обработать его и передать детям

Я попытался понять, как Android управляет сенсорным событием и немного запутался. Из того, что я понимаю, событие touch отправляется в корневой режим и передается детям. У меня есть FrameLayout который является контейнером для Fragment . Первый фрагмент – это ScrollView , второй – это какая-то Gallery (HorizontalListView), а последняя – также FrameLayout . Каждый раз только один фрагмент в макете. Что я хочу сделать, так это определить пользовательские прокрутки на экране для использования в приложении. Я хочу подсчитать удары и сделать что-то после нескольких проб.

Я попытался поместить OnTouchListener в верхний FrameLayout но он не вызывается, когда дочерний ScrollView является ScrollView или Gallery . Я попытался вернуть false а также true в конце onTouch , но я получаю тот же результат – его никогда не называют.

Как мне это сделать? Я просто хочу «прозрачно» обрабатывать события касания и передавать их, как я даже не касался их.

Solutions Collecting From Web of "Поймать событие onTouch родителем, обработать его и передать детям"

Я понимаю, что это на самом деле идет в другом направлении. Взгляды на ребенка запускают свое событие сначала (вроде). В корневом представлении get называется dispatchTouchEvent() , который onTouchEvent() событие в onTouchEvent() , а затем, в зависимости от того, вернутся ли они true или false, onTouchEvent() родительский onTouchEvent() .

dispatchTouchEvent(MotionEvent ev) решением для перехвата подобных вещей является переопределить dispatchTouchEvent(MotionEvent ev) в своем виде:

 @Override public boolean dispatchTouchEvent (MotionEvent ev) { // Do your calcluations return super.dispatchTouchEvent(ev); } 

Документация для этого находится здесь . Обратите внимание, что вы также можете переопределить этот метод в любой ViewGroup (например, FrameLayout и т. Д.),