У меня ширина изображения 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;
}
});
Мой обходной путь: я на самом деле позже не нужно, чтобы добавить этот код в деятельности. Я добавил его в класс non-activity и вместо ширины ImageView использовал ширину изображения Bitmap, и теперь у меня нет этой проблемы.
в onResume, экран еще не выложен, все компоненты по-прежнему 0x0. Возьмите вызов getMeasuredWidth или вызовите его после завершения макета – njzk2
@ njzk2 getMeasuredWidth() также возвращает 0. – Geek