我得到imageView的寬度0.下面是代碼。ImageView.getWidth()返回0
XML文件:
<ImageView
android:id="@+id/img"
android:layout_width="200dp"
android:layout_height="200dp" />
活動:
@Override
protected void onResume() {
super.onResume();
ImageView img = (ImageView) findViewById(R.id.img);
Log.d(TAG, "width : " + img.getWidth());
}
我不希望因爲我需要放置在許多地方該代碼使用下面的代碼。
ViewTreeObserver vto = img.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
ImageView img = (ImageView) findViewById(R.id.img);
Log.d(TAG, "width : " + img.getWidth());
return true;
}
});
我的解決方法: 其實我後來也沒必要在活動中添加此代碼。我將它添加到非活動類,而不是ImageView的寬度,我使用了位圖圖像的寬度,現在不存在這個問題。
在onResume中,屏幕尚未佈置,所有組件仍然是0x0。考慮調用getMeasuredWidth,或在佈局完成後調用它。 – njzk2
@ njzk2 getMeasuredWidth()也返回0. – Geek