我有一个视图,我试图得到它绘制后的位置。
下面是我使用的代码:
view.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener{
@Override
public void onGlobalLayout(){
int[] location = new int[2];
view.getLocationOnScreen(location);
Log.d("SOME TAG","Location is ("+location[0]+","+location[1]+)");
});
上面的代码给我0,75。很好,除非我在那里放置一个onClickListener来获取点击的位置(在左上角),我得到0,275。
有趣的是,如果我在onClickListener做同样的过程,我得到0,275左上角。任何线索我做错了什么,或者如果有一个更好的地方把代码获取的位置。它必须在绘制视图之后(原因很明显)。
谢谢!
有几种方法可以解决这个问题。我不确定这里的最终目标是什么,但它们是:
- 扩展视图和覆盖onDraw的例子或任何其他你需要的方法
- 就像你说的,叫它onClick,因为到那时UI布局和渲染正确