我正在构建一个包含2个片段的应用程序(使用ViewPager)。每个片段由4个按钮组成。我还使用带有这些按钮的onTouch监听器。我使用getLocationOnScreen(...)方法获取屏幕上的视图(按钮)位置。但是当我从第一个片段滑动到第二个片段时,接下来的4个按钮的位置相对于第一个片段。我的意思是,这些按钮的x坐标考虑了先前的片段宽度。 我的问题是 - 如何获得第二个片段的按钮位置相对于此片段页面而不是前一个?
谢谢!
编辑:添加了代码段:
以下是我如何将我的按钮在屏幕上的位置保持在哈希映射集合中(这是针对我所拥有的两个片段中的每一个):
public void getViewsPosition(final ArrayList<View> viewArr) {
for (final View v : viewArr) {
final ViewTreeObserver vto = v.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int[] i = new int[2];
v.getLocationOnScreen(i);
_rect = new Rect(i[0], i[1], i[0] + v.getWidth(), i[1]
+ v.getHeight());
view_to_rect.put(v, _rect);
if (Build.VERSION.SDK_INT < 16) {
vto.removeGlobalOnLayoutListener(this);
} else {
vto.removeOnGlobalLayoutListener(this);
}
}
});
}
}
这样可以保留第一个片段按钮的正确坐标。但对于第二个片段,x坐标相对于第一个片段。所以我在第一个片段宽度的 PLUS 片段中得到了按钮的x坐标。当然,y坐标在所有片段中都是正确的。