为了账号安全,请及时绑定邮箱和手机立即绑定

onTouchListener 不接受布局

onTouchListener 不接受布局

米琪卡哇伊 2021-11-24 18:41:50
代码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 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

你应该true从 onTouch 方法返回

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


查看完整回答
反对 回复 2021-11-24
?
绝地无双

TA贡献1946条经验 获得超4个赞

您需要更新 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;

    }


查看完整回答
反对 回复 2021-11-24
  • 2 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信