Pri*_*nce 2 android android-layout android-view android-imagebutton
我想得到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);
}
});
Run Code Online (Sandbox Code Playgroud)
但是在点击视图之前我想要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);
Run Code Online (Sandbox Code Playgroud)
但每当我尝试使用ClickListener获取X和Y时,我得到X和Y为0和0.因此,如果没有ClickListener,我不会得到Proper X和Y. 任何人都可以帮助解决什么是实际问题,如何在没有ClickListener的情况下获得Proper 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);
}
});
Run Code Online (Sandbox Code Playgroud)
快乐的编码
| 归档时间: |
|
| 查看次数: |
1436 次 |
| 最近记录: |