I have an ImageView that is defined in the following way:
<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"/>
Now after downloading a new bitmap I change the drawable. The image now appears in the top left corner of the ImageView. Is there a way to have the image fill up the whole height that is possible and then adjust the width of the view to enable scaling the image without changing the ascpect ratio?
The image fills up all the space on a standard screen but on a WVGA Resolution the image takes only about half of the actual height of the ImageView.
If I'm understanding you correctly, what you need to use is the centerCrop
scaleType. fitStart
scales the image proportionally, but neither the width nor height will exceed the size of the view, and the image will, as you said, have a top|left
gravity.
Using centerCrop
scales the image proportionally, but causes the shortest edge of the image to match the size of the view, and if there is additional data on the long side that does not fit, it is simply cropped off. The gravity is, of course, center
. The below worked for me:
<ImageView
android:src="@drawable/image_placeholder"
android:id="@+id/cover_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="centerCrop"
/>