次のように定義されているImageViewがあります。
<ImageView
Android:id="@+id/cover_view"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_below="@id/title"
Android:layout_above="@id/divider"
Android:adjustViewBounds="true"
Android:src="@drawable/image_placeholder"
Android:scaleType="fitStart"/>
新しいビットマップをダウンロードした後、ドローアブルを変更します。画像がImageViewの左上隅に表示されます。画像に可能な高さ全体を塗りつぶしてから、ビューの幅を調整して、アスペクト比を変更せずに画像をスケーリングできるようにする方法はありますか?
画像は標準画面のすべてのスペースを占めますが、WVGA解像度では、画像はImageViewの実際の高さの約半分しかかかりません。
基本的にここでの答えは、あなたが達成しようとしていることに対して事前に定義された値がないということです。解決策は、ニーズに適合する Matrix
を作成し、ImageView
で setImageMatrix(matrix)
を呼び出すことです。
私があなたを正しく理解している場合、使用する必要があるのはcenterCrop
scaleTypeです。 fitStart
は画像を比例的に拡大縮小しますが、幅も高さもビューのサイズを超えず、画像にはtop|left
重力。
centerCrop
を使用すると、画像が比例して拡大縮小されますが、画像の最短のEdgeがビューのサイズと一致し、長辺に収まらない追加のデータがある場合は、単に切り取られます。もちろん、重力はcenter
です。以下は私のために働きました:
<ImageView
Android:src="@drawable/image_placeholder"
Android:id="@+id/cover_view"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:scaleType="centerCrop"
/>
を呼び出して、スケールタイプをfitXYに変更できます。
imageView.setScaleType(ScaleType.FIT_XY);
単にxmlのようにしてください
Android:scaleType="fitXY"