android:imageviewで画像を引き伸ばして画面に合わせる


126

私が持っているimageviewにその高さと幅のセットを持っているものfill_parentlinearlayout同じ値が設定されていること。したがって、これで画像が画面に合うように設定されるはずです。しかし、それは80%程度(ランドスケープモードではマージンの上部と下部)に収まります。

私は成功せずに次のコードを試しました:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();

imgView.setMinimumWidth(width);
imgView.setMinimumHeight(height);

imgView.setMaxWidth(width);
imgView.setMaxHeight(height);

他のアイデアは?


これは少し異なる問題ですが、この回答が役立つはずです。
フレドリー、2011年

回答:


317

文法的に変更するには:

imgview.setScaleType(ScaleType.FIT_XY);

または

xmlから変更するには:

 android:scaleType="fitXY"

26
私はこれがあなたが望んでいたことを知っていますが、アスペクト比を気にする画像の場合、これはそれを引き延ばします。
Artem Russakovskii

ScrollView内のImageViewの不思議な作品。アスペクトも正しいままです。
JNissi 2012年

10
同じことをレイアウトxml、android:scaleType = "fitXY"で定義できます
Sathesh

9
画像は、すべての領域を塗りつぶす作ると良いアスペクト比の使用を維持するためにv.setAdjustViewBounds(true); v.setScaleType(ImageView.ScaleType.CENTER_CROP);
マルコ・フロリアン

1
魅力的な作品
dave o grady

119

レイアウトのxmlファイルにandroid:scaleType="fitXY"
PS を指定します。これは、背景がデフォルトでビューに合わせて伸縮するように設定されているのではandroid:src="..."なく、画像が設定されている場合に適用android:background="..."されます。


背景のことで問題が解決しませんでした。何か問題がありますか?ご覧ください:stackoverflow.com/questions/14164473/…–
Dheeraj Bhaskar 2013

1
画像の幅をハードコードし、高さをスケーリングしたい場合、これはアスペクト比を
考慮しません

これを画面全体に合わせるにはどうすればよいですか?私はそれがまだ比例していることを望みます
ルチルバロニア2015

これを伝えるための+1は、android:background = "..."ではなくandroid:src = "..."に適用されます。これは非常に重要です
DragonFire

20

これを使って:

ImageView.setAdjustViewBounds(true);

4
これとの組み合わせandroid:scaleType="fitXY"が機能しました。ありがとう
smac89

@ smac89これらの組み合わせとFIT_CENTERを使用するだけの違いは何ですか?FIT_CENTERを使用しないでください。
Jenix 2017

@Jenix、最後にAndroidに触れてからしばらく経ちましfitXYたが、設定したフレーム/ビューに合わせて画像が比例して引き伸ばされるためだと思います。FIT_CENTERサウンドを使用すると、画像が配置されるだけですビューの中央にありますが、ビューを埋めません。私は間違っているかもしれませんが、どちらがうまくいくかを試すために実験することができます
smac89

@ smac89尋ねる前に、私はすでに両方をテストしましたが、まったく同じように機能しました。その理由について知りたくて、FIT_CENTERを知らなかったと思いますが、あなたが教えてくれた組み合わせについて知らなかったのと同じです。:)
Jenix 2017

9

使用するandroid:scaleType="fitXY"場合は、指定する必要があります

android:layout_width="75dp" そして android:layout_height="75dp"

wrap_contentを使用すると、必要なサイズに拡大されません

<ImageView
android:layout_width="75dp"
android:layout_height="75dp"
android:id="@+id/listItemNoteImage"
android:src="@drawable/MyImage"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_marginStart="12dp"
android:scaleType="fitXY"/>


2

このandroid:scaleType="fitXY"コードをXmlファイルで使用しました。


0

ImageViewの高さと幅をwrap_contentに変更して使用するだけです

exampleImage.setScaleType(ImageView.ScaleType.FIT_XY);

あなたのコードで。


-11

使用してみてください:

imageview.setFitToScreen(true);
imageview.setScaleType(ScaleType.FIT_CENTER);

これにより、イメージビューが正しい比率で画面にフィットします。


12
「imageview.setFitToScreen(true);」- それは何ですか?文書化されていない方法?
Malachiasz 14

私は日食を使用していますが、これはコンパイルされません:imageview.setFitToScreen(true)
学習者

5
Androidにはこのようなメソッドはありません。
NightFury 14

多分彼は意味しましたsetFitsSystemWindows()か?
ban-geoengineering 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.