onTouchListener 不接受布局

代码


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 总是必须是按钮还是也可以是布局或文本视图?


米琪卡哇伊
浏览 110回答 2
2回答

拉风的咖菲猫

你应该true从 onTouch 方法返回如果您false在 get 时返回MotionEvent.ACTION_DOWN,Android 会假定您对处理触摸事件不感兴趣,并且不会将任何其他运动事件传递给您(包括MotionEvent.ACTION_MOVE您期望的)

绝地无双

您需要更新 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;    }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java