代码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
您期望的)
绝地无双
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;
}
添加回答
举报
0/150
提交
取消