我想要获得 X 和 Y 视角(ImageButton)。
当我尝试使用下面的代码在 Click 事件上查找 X 和 Y 时,我得到了正确的 View X 和 Y 坐标。
ImageButton imagebutton = findviewbyId(R.id.imagebutton);
imagebutton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int[] posXY = new int[2];
v.getLocationOnScreen(posXY);
x = posXY[0];
y = posXY[1];
Log.d("X and Y Point", x + " " + y);
}
});
但我想要在单击视图之前获得 X 和 Y 坐标,因此我尝试使用以下代码获取 X 和 Y。
ImageButton imagebutton = findviewbyId(R.id.imagebutton);
int[] posXY = new int[2];
imageButton.getLocationOnScreen(posXY);
x = posXY[0];
y = posXY[1];
Log.d("X and Y Point", x + " " + y);
但是每当我尝试使用 ClickListener 获取 X 和 Y 时,我都会得到 X 和 Y 为 0 和 0。因此,如果没有 ClickListener,我就无法获得正确的 X 和 Y。
任何人都可以帮助解决实际问题吗?如何在没有 ClickListener 的情况下获得正确的 X 和 Y?
返回值为零的原因是,如果您在“onCreate()”中调用此方法,则尚未创建 ImageButton。
您可以使用 ViewTreeObserver 来获取位置:
ViewTreeObserver vto = imagebutton.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
this.imagebutton.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int[] posXY = new int[2];
imagebutton.getLocationOnScreen(posXY);
x = posXY[0];
y = posXY[1];
Log.d("X and Y Point", x + " " + y);
}
});
快乐编码
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)