让我们假设一个ImageView,当添加到我的布局(相对布局)时,没有缩放(比例为1)。如果我调用getX(),它将返回正确的X位置。
但是,如果我现在用2调用setScaleX(),然后调用getX(),我得到一个完全不同的值。如果我将此值除以比例因子(2),它仍然不会给我实际位置。我如何获得实际位置?为什么getX()返回荒谬的大值,当ImageView缩放时它会继续增长?
这也是Y坐标的情况。
答案 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;
}