代码
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始终必须是按钮,还是必须是布局或文本视图?
答案 0 :(得分:2)
您应该从onTouch方法返回true
如果您在获得false
后返回MotionEvent.ACTION_DOWN
,
Android假定您对处理触摸事件不感兴趣,并且根本不向您传递任何其他运动事件(包括您期望的MotionEvent.ACTION_MOVE
)
答案 1 :(得分:0)
您需要更新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;
}