Обработка события onClick для ребенка и onTouch для родителя - PullRequest
0 голосов
/ 28 февраля 2020

Я прочитал много тем на эту тему, но все еще не могу решить проблему. Вот в чем дело - у меня есть родительское представление с 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.

Что для этого можно сделать?

...