我的Scaled ImageView的尺寸

时间:2012-07-22 16:36:23

标签: android imageview dimension

如何确定Scaled ImageView的尺寸?我尝试使用getWidth()& getHeight它总是返回0.我对ImageView的xml布局如下:

<ImageView
            android:id="@+id/imgView"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:scaleType="fitXY"
            android:src="@drawable/my_image" />

请提出建议。

2 个答案:

答案 0 :(得分:1)

您可能过早地调用了getWidth()方法。在视图显示在屏幕上之前,ImageView的宽度和高度将不可用。尝试在onWindowFocusChanged中获取它们:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);

    int width = iv.getWidth();
    int height = iv.getHeight();

    // ...
}

答案 1 :(得分:0)

你不会在onCreate中获得这些维度。尚未测量视图,并且未设置层次结构。这些可以工作,但你需要在应用程序绘制屏幕后的某个地方使用它们,或者替代方法是设置ViewTreeObserver以在设置布局时通知您。ViewTreeObserver

以下是它的完成方式:

  1. 致电getVieeTreeObserver()以获取对您活动中的viewTreeObserver的引用。
  2. 然后添加一个onGlobalLayoutListener:

     observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener()
            {
                @Override
                public void onGlobalLayout()
                {   
                    ViewTreeObserver obs = MyActivity.this.getViewTreeObserver();
                    obs.removeGlobalOnLayoutListener(this);
                }
            });
    

    在此onGlobalLayout方法中,您可以使用视图并获取其宽度和高度,并对其执行任何操作。