如何在绘制后查找视图的位置

时间:2015-05-14 23:51:50

标签: java android user-interface

我有一个视图,我试图在绘制之后获得它的位置。

以下是我正在使用的代码。

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。关于我做错了什么的线索,或者是否有更好的地方放置代码来获取位置。必须在绘制视图之后(出于显而易见的原因)。

谢谢!

1 个答案:

答案 0 :(得分:0)

有几种方法可以解决这个问题。我不确定这里的最终目标是什么,但这里是他们:

  1. 扩展视图并覆盖onDraw,例如您需要的任何其他方法
  2. 就像你说的那样,把它称为onClick,因为到那时UI是布局并正确呈现