0

如何确定 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" />

请提出一些建议。

4

2 回答 2

1

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

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

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

    // ...
}
于 2012-07-22T16:52:35.033 回答
0

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

这是它的完成方式:

  1. 调用getVieeTreeObserver()以获取对活动中 viewTreeObserver 的引用。

然后添加一个 onGlobalLayoutListener:

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

在这个onGlobalLayout方法中,你可以使用你的视图并获取它的宽度和高度,然后对它们做任何事情。

于 2012-07-22T16:58:03.753 回答