0

ダウンロードしたドローアブルを正しく取得しており、正しく表示されます。ImageView に画像の上部 144x284dip を表示したいだけです。代わりに、画像がダウンロードされると、ImageView はドローアブルの幅と高さに合わせてサイズ変更されます。layoutparams と minimumwidth / minimumheight の両方を変更しようとしましたが、役に立ちませんでした。

ImageView を強制的に 144x284 に固定するためにできることはありますか?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="284dip"
    android:layout_height="144dip" >

    <ImageView
        android:id="@+id/imageViewLogo"
        android:layout_width="284dip"
        android:layout_height="144dip" />

</LinearLayout>
4

2 に答える 2

1

私の理解が正しければ、次の 2 つのことを行う必要があります。

  1. ImageView のサイズを 284dip X 144dip に修正します。
  2. 画像の左上部分のみを拡大縮小せずに表示します。

2 番目の部分を実行するには、「マトリックス」スケール タイプを使用し、スケールを 1.0 に、変換係数を 0.0 に設定する必要があります。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="284dip"
        android:layout_height="144dip"
        android:scaleType="matrix"
        android:src="@drawable/ic_launcher" />
</LinearLayout>

デフォルトでは、倍率は 1 で平行移動は 0 です。したがって、他に何もする必要はありません。別のスケーリングと変換が必要な場合は、次のようなコードを記述できます。

void showImage(Bitmap bm) {
    float scaleFactor = ...;
    float transform = ...;

    imageView.setImageBitmap(bm);
    final Matrix matrix = new Matrix();
    matrix.setScale(scaleFactor, scaleFactor);
    matrix.setTranslate(transform, transform);
    imageView.setImageMatrix(matrix);
}
于 2012-08-28T17:07:52.347 に答える
1

わかりました、解決しました。

私はちょうどこれをやった:

Bitmap newBitmap = Bitmap.createBitmap(bm, 0, 0, 144, 284);

次に、ImageView に設定します。

于 2012-08-28T15:31:26.640 に答える