1

我正在构建一个包含 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 坐标是相对于第一个片段的。所以我得到了这个片段中按钮的 x 坐标加上第一个片段的宽度。当然,y 坐标在所有片段中都是正确的。

4

0 回答 0