getX()不返回正确的值

时间:2013-12-10 14:43:56

标签: android

让我们假设一个ImageView,当添加到我的布局(相对布局)时,没有缩放(比例为1)。如果我调用getX(),它将返回正确的X位置。

但是,如果我现在用2调用setScaleX(),然后调用getX(),我得到一个完全不同的值。如果我将此值除以比例因子(2),它仍然不会给我实际位置。我如何获得实际位置?为什么getX()返回荒谬的大值,当ImageView缩放时它会继续增长?

这也是Y坐标的情况。

3 个答案:

答案 0 :(得分:1)

我现在使用getMatrix()并从此矩阵中获取转换值,而不是使用getX()和getY()来获取视图的位置。这似乎运作良好!它报告正确的X和Y值。

答案 1 :(得分:0)

当我尝试访问getX(),getY()以及其他值(如getWidth()或getHeight()时,当我尝试从“onCreate()”访问它们时,我遇到了这个问题,当我添加时一个按钮,并尝试从按钮的onClick访问它们工作正常。

答案 2 :(得分:0)

这是我的一个项目的功能,我希望这可以帮助你:

 private int[] getLocation(final View view) {
        final int[] locations = new int[]{0, 0, 0, 0};
        if (view != null) {
            ViewTreeObserver vto = view.getViewTreeObserver();
            vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    int[] location = new int[2];
                    world_layout.getLocationInWindow(location);
                    locations[0] = location[0];//x postion
                    locations[1] = location[1];//y postion
                    locations[2] = view.getWidth();
                    locations[3] = view.getHeight();

                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                        view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                    } else {
                        view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                    }
                }
            });
        }
        return locations;
    }