If I call getMeasuredWidth() or getWidth() for layout in onResume they return 0

前端 未结 7 2049
深忆病人
深忆病人 2020-11-28 09:10

If I call getMeasuredWidth() or getWidth() for layout in onResume they returns 0. I think that view it\'s not drawn yet in this moment.

Also I think that I need to

7条回答
  •  感动是毒
    2020-11-28 09:46

    This answer says:

    Use the ViewTreeObserver on the View to wait for the first layout. Only after the first layout will getWidth()/getHeight()/getMeasuredWidth()/getMeasuredHeight() work.

    ViewTreeObserver viewTreeObserver = view.getViewTreeObserver();
    if (viewTreeObserver.isAlive()) {
      viewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
          view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
          viewWidth = mediaGallery.getWidth();
          viewHeight = mediaGallery.getHeight();
        }
      });
    }
    

提交回复
热议问题