我在自定义视图中响应触摸事件onTouchEvent(MotionEvent event)
。我在坐标不一致时遇到问题:event.getRaw(Y)
返回包括状态栏在内的触摸的 Y 坐标,但myView.getTop()
返回不包括状态栏的视图顶部的 Y 坐标。我采用了以下技巧来纠正状态栏的高度:
// Get the size of the visible window (which excludes the status bar)
Rect rect = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
// Get the coordinates of the touch event, subtracting the top margin
final int x = (int) event.getRawX();
final int y = (int) event.getRawY() - rect.top;
有更好的解决方案吗?