Я прочитал много тем на эту тему, но все еще не могу решить проблему. Вот в чем дело - у меня есть родительское представление с OnTouchListener
, и оно работает хорошо, когда его касаются везде, кроме вложенного дочернего представления. Так что мне нужно, чтобы вся ViewGroup действовала так, как задано в OnTouchListener
, когда пользователь проводит ее, но когда пользователь щелкает вложенный дочерний элемент, мне нужно выполнить событие click для этого дочернего элемента. Теперь код:
chldView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
considerAsClick[0] = true;
return true;
}
if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
considerAsClick[0] = false;
return false;
}
if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
if (considerAsClick[0]){
handleClickEvent();
return true;
}
}
return false;
}
});
Проблема в том, что когда я возвращаю false
после MotionEvent.ACTION_DOWN
, родительский метод onTouchListener работает, и все выглядит хорошо, но никаких других действий (ACTION_MOVE, ACTION_UP) не отслеживается! Я обнаружил, что это нормальное поведение, так что все в порядке.
Когда я возвращаю true
после MotionEvent.ACTION_DOWN
, родительский метод onTouchListener не работает! Неважно, что я вернусь после MotionEvent.ACTION_MOVE
или MotionEvent.ACTION_UP
.
Что для этого можно сделать?