如何确定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" />
请提出建议。
答案 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
以下是它的完成方式:
getVieeTreeObserver()
以获取对您活动中的viewTreeObserver的引用。然后添加一个onGlobalLayoutListener:
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{
ViewTreeObserver obs = MyActivity.this.getViewTreeObserver();
obs.removeGlobalOnLayoutListener(this);
}
});
在此onGlobalLayout
方法中,您可以使用视图并获取其宽度和高度,并对其执行任何操作。