5

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());
}

この問題を解決するのを手伝ってください。前もって感謝します。

4

2 に答える 2

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;
    }
    });
于 2012-12-26T16:06:25.400 に答える
4

あなたが電話getWidth()しているかもしれませんが、getHeight()早すぎます。UI はまだサイズ変更されておらず、画面にレイアウトされていないため、メソッドは正しく 0 を返しています。コード全体をもう一度見直してください。または、完全なコードをここに貼り付けます。

于 2012-12-25T09:53:14.617 に答える