我缩放的ImageView的尺寸查看
问题描述:
如何确定缩放的ImageView的尺寸?我尝试使用的getWidth()&的getHeight它总是返回0.我的XML布局为ImageView的如下:我缩放的ImageView的尺寸查看
<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" />
请提出好的建议。
答
您可能过早调用getWidth()方法。视图在屏幕上呈现之前,ImageView的宽度和高度将不可用。尝试在onWindowFocusChanged中获取它们:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
int width = iv.getWidth();
int height = iv.getHeight();
// ...
}
答
您不会在onCreate中获得这些尺寸。视图尚未测量,层次结构未设置。这些都可以工作,但你需要在应用程序绘制屏幕后在某个地方使用它们,或者另一种方法是设置ViewTreeObserver以在布局设置时通知您。 ViewTreeObserver
下面是它如何做的:
- 通话
getVieeTreeObserver()
在您的活动去的viewTreeObserver参考。
然后添加一个onGlobalLayoutListener:
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{
ViewTreeObserver obs = MyActivity.this.getViewTreeObserver();
obs.removeGlobalOnLayoutListener(this);
}
});
这里面onGlobalLayout
方法,你可以用你的观点,并得到其宽度和高度,做任何他们。
+0
MyActivity.this.getViewTreeObserver() - 不存在。 – Debopam 2012-07-22 17:37:49
该解决方案非常简单。但有一个问题。当设备方向从横向改变为纵向时,会引发异常。 – Debopam 2012-07-22 17:34:55
您将不得不检查您的logcat以查看异常原因。 – 2012-07-22 17:36:18
我检查了我的LogCat。它在MyActivity.java文件的第103行说NullPointerException。 但是第103行:只是int leftMargin = imgView.getWidth()+ 10; 如何在纵向模式下在纵向模式下不可能出现细节指针异常? – Debopam 2012-07-22 17:42:50