0

スケーリングされたImageViewのサイズを確認するにはどうすればよいですか?getWidth()とgetHeightを使用してみましたが、常に0が返されます。ImageViewのxmlレイアウトは次のとおりです。

<ImageView
            android:id="@+id/imgView"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:scaleType="fitXY"
            android:src="@drawable/my_image" />

何か提案してください。

4

2 に答える 2

1

getWidth()メソッドの呼び出しが早すぎる可能性があります。ImageViewの幅と高さは、ビューが画面にレンダリングされるまで使用できません。onWindowFocusChanged内でそれらを取得してみてください:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);

    int width = iv.getWidth();
    int height = iv.getHeight();

    // ...
}
于 2012-07-22T16:52:35.033 に答える
0

onCreateでこれらのディメンションを取得することはできません。ビューはまだ測定されておらず、階層は設定されていません。これらは機能しますが、アプリが画面を描画した後のどこかで使用する必要があります。または、レイアウトが設定されたときに通知するようにViewTreeObserverを設定することもできます。ViewTreeObserver

方法は次のとおりです。

  1. を呼び出しgetVieeTreeObserver()て、アクティビティ内のviewTreeObserverへの参照を取得します。

次に、onGlobalLayoutListenerを追加します。

 observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener()
        {
            @Override
            public void onGlobalLayout()
            {   
                ViewTreeObserver obs = MyActivity.this.getViewTreeObserver();
                obs.removeGlobalOnLayoutListener(this);
            }
        });

このonGlobalLayoutメソッド内では、ビューを使用してその幅と高さを取得し、それらを使用して何でも行うことができます。

于 2012-07-22T16:58:03.753 に答える