使用viewPager获取按钮在片段中的位置

时间:2013-08-17 07:45:59

标签: android android-fragments ontouchlistener

我正在构建一个包含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坐标在所有片段中都是正确的。

0 个答案:

没有答案