[Android] ImageView的getWidth()跟getHeight()回傳值為0

這個問題的原因通常是View尚未準備好,

必須等到所有View都讀取完畢,return值才會不等於0。

該如何解決呢?有兩種作法:

一、等讀取完畢再去取值

在Activity覆寫下列函式:

 @Override
 public void onWindowFocusChanged(boolean focus) {
  super.onWindowFocusChanged(focus);
  // 在這裡getWidth()或getHeight()
 }

二、使用ViewTreeObserver().OnPreDrawListener預先讀取數值

 mImageView.getViewTreeObserver().addOnPreDrawListener(
  new ViewTreeObserver.OnPreDrawListener() {
  public boolean onPreDraw() {
   int Height = mImageView.getMeasuredHeight();
   int Width = mImageView.getMeasuredWidth();
   // 取得寬高
   return true;
  }
 });

有什麼想法嗎?快來跟大家分享你的看法。