0

編集:部分的な答え

両方のディメンションが xml に設定されている場合、期待どおりに動作します。たとえば、

android:layout_width="250dp"
android:layout_height="250dp"

1 つが wrap_content に残されている場合は、そうではありません。

元の投稿

これが私のレイアウトです:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal" >

<ImageView
android:id="@+id/board"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/board" />

</LinearLayout>

画面に表示される画像の寸法が正しいのはなぜですか (画面の高さ x 画面の高さは、正方形のビットマップであり、高さに match_parent を設定しているため)、しかし、ImageView.getWidth() および ImageView.getHeight() を呼び出すと、画面の寸法?

よろしくお願いします

4

3 に答える 3

6

これは、以前の質問で提供した理由により発生しています https://stackoverflow.com/a/10183799/1244489

getWidth() と getHeight() を呼び出すと、ImageView のサイズが返されます。この場合、フルスクリーン サイズになります。ソース画像は、縦横比を維持しながら画面に合わせて縮小されていますが、ImageView は縮小されていません。画像サイズに縮小するには、パラメーターを指定する必要があります

android:adjustViewBounds="true"

あなたのImageViewで。

于 2012-04-17T01:21:43.900 に答える
1

ここで答えが見つかりました: 画像をImageViewに合わせ、アスペクト比を維持してから、ImageViewのサイズを画像のサイズに変更しますか?

問題の根本は次のとおりです。ImageViewはそれ自体を画像のサイズに合わせてサイズ変更しないため、自分でサイズを変更する必要があります。

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) imageView.getLayoutParams(); 
params.width = width;
params.height = height;
imageView.setLayoutParams(params);
于 2012-04-20T11:30:44.707 に答える
0

getWidth()とは、画面次元である階層getHeight()から呼び出されるためです。View実際、画像がImageView'fitCenter などのスケールタイプを使用してスケーリングされた場合、得られる寸法は画像とまったく一致しません。それらは、画像が占めているものだけでなく、ビュー全体のピクセル幅とピクセル高さのままです。

于 2012-04-16T19:31:02.800 に答える