如何在坐标中获取视图的位置?

win*_*ter 3 android imageview android-relativelayout

嗨,我在RelativeLayout中有一个ImageView,现在我怎样才能在屏幕上获得imageview的X和Y位置?

我试过了

getLocationOnScreen
log(mPhoto.getLeft());
log(mPhoto.getScrollX());
log(mPhoto.getX());
log(mPhoto.getTranslationX());
Run Code Online (Sandbox Code Playgroud)

但他们都返回0.

在将imageview设置为居中之后调用上述函数

    RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(mFaceWidth, mFaceHeight);
    lp1.addRule(RelativeLayout.CENTER_HORIZONTAL);
    lp1.addRule(RelativeLayout.CENTER_VERTICAL);
    mPhoto.setLayoutParams(lp1);
    mPhoto.requestLayout();
Run Code Online (Sandbox Code Playgroud)

小智 5

在屏幕上呈现视图后,将调用View Tree Observer回调.上面的方法总是会产生0,因为还没有渲染视图/布局.

ViewTreeObserver vto=view.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener(){
@Override public void onGlobalLayout(){
  int [] location = new int[2];
  view.getLocationOnScreen(location);
  x = location[0];
  y = location[1];
  view.getViewTreeObserver().removeGlobalOnLayoutListener(this);

}
}
Run Code Online (Sandbox Code Playgroud)