2016-12-06 2 views
0

У меня есть иерархия пользовательских взглядов построить следующим образом:просмотров «племянником» блокировать щепоткой жест

  • Пользовательские View A имеет несколько вид Б, как дети
  • пользовательский вид B является как кнопка и должна реагировать на кнопку/нажмите
  • пользовательский вид C имеет щепоткой жест на нем и является родственником A, и находится под а в иерархии видов

Schema of views to explain the case

При ущемлении только в пользовательском представлении A все идет хорошо, так как A не захватывает никаких событий движения и вид под ним, C принимает события и делает жест щепотки (увеличение/уменьшение) правильной.

При нажатии на пользовательский вид B нажимается клик, и все это хорошо.

Этот вопрос, при попытке зажать и один палец начинается View B, он ловит свои события, и те, которые не распространяются под ним и не зажимая никогда не происходит на заказ View C.

Я хотел бы имеют View B, реагируют только на нажатие и пропускают все другие события (щепотку) под представление под самим собой, в этом случае пользовательский вид C.

Как я могу достичь этого сценария?

ответ

0

Нашли решение!

Мы пытаемся найти TapConfirmed события (с использованием gestureDetector, чтобы найти его), и мы посылаем событие непосредственно к собрату передать событие:

@Override 
public boolean onInterceptTouchEvent(MotionEvent event) { 


    if (conditionToIntercept) { 
     return true; 
    } 
    return false; 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 

    if(conditionToIntercept{ 
     if (!gestureDetectorCompat.onTouchEvent(event)) { 
      siblingView.dispatchTouchEvent(event); 
      return true; 
     } 
    } 

    return false; 
}