Как создать 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.
Ответы
Ответ 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"