Подтвердить что ты не робот

Как создать ImageView, который заполняет родительскую высоту и отображает изображение как можно больше?

У меня есть 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"/>

Теперь после загрузки нового растрового изображения я изменяю drawable. Изображение теперь отображается в верхнем левом углу ImageView. Есть ли способ, чтобы изображение заполнило всю высоту, которая является возможной, а затем отрегулируйте ширину представления, чтобы позволить масштабирование изображения без изменения коэффициента восхождения?

Изображение заполняет все пространство на стандартном экране, но с разрешением WVGA изображение занимает примерно половину фактической высоты ImageView.

4b9b3361

Ответ 1

В основном ответ здесь заключается в том, что предопределенное значение для того, чего вы пытаетесь достичь, не существует. Решение состоит в том, чтобы создать Matrix, который соответствует вашим потребностям и вызывает setImageMatrix(matrix) на ImageView.

Ответ 2

Если я правильно понимаю вас, то вам нужно использовать centerCrop scaleType. fitStart пропорционально масштабирует изображение, но ни ширина, ни высота не будут превышать размер представления, и изображение, как вы сказали, будет иметь силу top|left.

Использование centerCrop пропорционально масштабирует изображение, но приводит к тому, что кратчайший край изображения соответствует размеру представления, а если есть дополнительные данные на длинной стороне, которая не подходит, она просто обрезается. Разумеется, гравитация 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"
/>

Ответ 3

Вы можете изменить тип шкалы на fitXY с помощью вызова

imageView.setScaleType(ScaleType.FIT_XY);

Ответ 4

просто сделайте это в xml, например

android:scaleType="fitXY"