Reputation: 453
I am having problem withh the getWidth / getheight function of ImageView. My xml is as follows:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/bonus_popup"
android:visibility="gone"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/todaybonus"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:adjustViewBounds="true"
android:src="@drawable/startscreen_todaybonus" />
<ImageView android:id="@+id/ok_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="acceptBonus"
android:background="#000000"></ImageView>
</RelativeLayout>
and my code is as follows:
if (isDisplayBonus){
set_blur_background();
bonusPopup.setVisibility(0);
Log.i(TAG, "Bonus width: " + todayBonus.getWidth());
Log.i(TAG, "Bonus height: " + todayBonus.getHeight());
}
Please help me solve this proble,. Thank you in advance.
Upvotes: 5
Views: 12106
Reputation: 453
Well, I have found the reason. When I set the visibility, the view had not actually been drawn, so I couldn't use getHeight and getWidth function. I found the solution: use ViewTreeObserver
todayBonus.getViewTreeObserver().addOnPreDrawListener(
new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
int finalHeight = todayBonus.getMeasuredHeight();
int finalWidth = todayBonus.getMeasuredWidth();
// Do your work here
return true;
}
});
Upvotes: 8
Reputation: 10625
May be you are calling getWidth()
and getHeight()
too early. The UI has not been sized and laid out on the screen yet, and as a result, the methods are correctly returning 0. Review your whole code again. Or paste your complete code here.
Upvotes: 4