我曾经有一个不使用 ActionBar 的 Activity。布局是一个RelativeLayout
宽度和高度仅与父级匹配的布局。它允许用户在事件中使用以下代码的一部分拖动按钮onTouch
:
MarginLayoutParams marginParams = new MarginLayoutParams(v.getLayoutParams());
int left = (int) event.getRawX() - (v.getWidth() / 2);
int top = (int) event.getRawY() - (v.getHeight());
marginParams.setMargins(left, top, 0, 0);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams);
v.setLayoutParams(layoutParams);
所有花花公子 - 按钮在手指下方移动并正确放置在屏幕上的位置。然而,现在我启用了 ActionBar,当单击时,按钮突然在手指下方移动了约 30 像素。为了说明这种行为,这是我曾经拥有的(在左侧)和现在发生的事情(在右侧):
我认为这是因为 ActionBar 现在用它自己的高度取代了所有东西。当然,我不希望这种情况发生,或者至少纠正这种情况,所以:
如何在
setMargins()
不使用硬编码值的情况下根据 ActionBar 的实际大小移动位置?我怎样才能防止 ActionBar 首先改变一切?换句话说,我如何确保我的按钮相对于 ActionBar 的底线和手指指向的位置?
这就是我要的: