我遇到了ImageView的getWidth / getheight函数问题。 我的xml如下:
<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>
我的代码如下:
if (isDisplayBonus){
set_blur_background();
bonusPopup.setVisibility(0);
Log.i(TAG, "Bonus width: " + todayBonus.getWidth());
Log.i(TAG, "Bonus height: " + todayBonus.getHeight());
}
请帮我解决这个问题。提前谢谢。
答案 0 :(得分:8)
好吧,我找到了原因。当我设置可见性时,实际上没有绘制视图,因此我无法使用getHeight和getWidth函数。 我找到了解决方案:使用ViewTreeObserver
todayBonus.getViewTreeObserver().addOnPreDrawListener(
new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
int finalHeight = todayBonus.getMeasuredHeight();
int finalWidth = todayBonus.getMeasuredWidth();
// Do your work here
return true;
}
});
答案 1 :(得分:4)
您可能过早地致电getWidth()
和getHeight()
。 UI尚未在屏幕上进行调整大小和布局,因此,方法正确返回0.再次检查整个代码。或者在此处粘贴完整的代码。