onTouchListener не принимает макет - PullRequest
0 голосов
/ 18 октября 2018

Код

private RelativeLayout mToolbar;
mToolbar = (RelativeLayout) myview.findViewById(R.id.toolbar);

mToolbar.setOnTouchListener(new View.OnTouchListener() {
        WindowManager.LayoutParams updatedParameters = finalParameters;
        double x;
        double y;
        double pressedX;
        double pressedY;

        @Override
        public boolean onTouch(View v, MotionEvent event) {

            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:

                    x = updatedParameters.x;
                    y = updatedParameters.y;

                    pressedX = event.getRawX();
                    pressedY = event.getRawY();

                    break;

                case MotionEvent.ACTION_MOVE:
                    updatedParameters.x = (int) (x + (event.getRawX() - pressedX));
                    updatedParameters.y = (int) (y + (event.getRawY() - pressedY));

                    wm.updateViewLayout(myview, updatedParameters);

                default:
                    break;
            }

            return false;
        }
    });

У меня есть служба, и приведенный выше код может перемещаться по этой службе на экране ... Она работала раньше, когда мне приходилось касаться кнопки и перемещать ее.Я переключил его на макет сейчас, и он больше не работает. Почему это не работает?Тот же код, который я использовал вместо кнопки, и он работал нормально.Всегда ли onTouch должен быть кнопкой, или это могут быть макеты или текстовые представления?

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Вам необходимо обновить возвращаемую часть метода onTouch

  public boolean onTouch(View v, MotionEvent event) {
    // if return is true means touch enabled
    // If return is false means touch is disabled
    return true;
    }
0 голосов
/ 18 октября 2018

Вы должны вернуть true из метода onTouch

Если вы вернете false, когда получите MotionEvent.ACTION_DOWN, Android предполагает, что вы не заинтересованы в обработке сенсорных событий, и просто не пропускает никакихдругие события движения (включая MotionEvent.ACTION_MOVE, которые вы ожидаете)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...