在我的Android应用程序的生命周期中,我应该获得图像视图的宽度和高度?

时间:2013-11-28 08:55:37

标签: android android-imageview android-lifecycle

private void getPicDetails() {

            targetW = img_cow.getWidth();
            targetH = img_cow.getHeight();

            Log.e("targetW: ", "" + targetW);
            Log.e("targetH: ", "" + targetH); 
        }

我有一个图像视图,上面的方法获取高度和宽度来打印高度和宽度的值。现在,当我在onCreate中调用getPicDetails()时,值为0,与我在OnStartonResume中的值相同。

我的问题是:我应该在哪里放置我的方法,使imageview初始化并存在?

3 个答案:

答案 0 :(得分:2)

你可以在 onWindowFocusChanged

内打电话
@Override
public void onWindowFocusChanged(boolean hasFocus){
    int width=imageView.getWidth();
    int height=imageView.getHeight();
}

答案 1 :(得分:0)

  

在我的Android应用程序的生命周期中,我应该获得宽度和高度   图像视图

布局完成后:

@Override
public void onLayout(boolean changed, int left, int top, int right, int bottom) {
    super.onLayout(changed, left, top, right, bottom);
    getPicDetails();
}

答案 2 :(得分:0)

你可以使用我做的下一个功能:

  public static void runJustBeforeBeingDrawn(View view, Runnable runnable)
  {
    ViewTreeObserver.OnPreDrawListener preDrawListener = new ViewTreeObserver.OnPreDrawListener(view, runnable)
    {
      public boolean onPreDraw() {
        ViewUtil.this.getViewTreeObserver().removeOnPreDrawListener(this);
        runnable.run();
        return true;
      }
    };
    view.getViewTreeObserver().addOnPreDrawListener(preDrawListener);
  } 

编辑:runJustBeforeBeingDrawn的替代方案:https://stackoverflow.com/a/28136027/878126