ImageView fit without stretching the image

is it possible that my ImageView will fit to all screen sizes without the image look stretched?

i tried all scale types changing it to background and src with fill_parent > wrap_content

but still. if the image is not smaller it just looks stretched..

example:

<ImageView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:scaleType="centerInside"
    android:adjustViewBounds="true"
    android:background="@drawable/background" />

<ImageView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:scaleType="fitXY"
    android:adjustViewBounds="true"
    android:background="@drawable/background" />

these 2 fits the width but the image is stretched.. but when i change it to src the image is just centered and small.


Solution 1:

There is no built-in scale type that allows the ImageView to automatically upscale the image and keep its aspect ratio intact. The only scale type that does upscaling is fitXY, which won't respect the aspect ratio, as you found out yourself too.

That being said, this topic has already been visited more than once. Have a look at some of the proposed suggestions for similar questions:

  • ImageView one dimension to fit free space and second evaluate to keep aspect ration
  • Fit image into ImageView, keep aspect ratio and then resize ImageView to image dimensions?
  • Resizing ImageView to fit to aspect ratio

I'm sure'll be heaps more, so it might worth using the search box at the top.

Solution 2:

You can do it by just adding just one attributes to ImageView

android:adjustViewBounds="true"