Preguntados a menudo, nunca respondidos (al menos no de forma reproducible).
Tengo una vista de imagen con una imagen que es más pequeña que la vista. Quiero escalar la imagen al ancho de la pantalla y ajustar la altura de ImageView para reflejar la altura proporcionalmente correcta de la imagen.
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
Esto da como resultado la imagen centrada en su tamaño original (más pequeño que el ancho de la pantalla) con márgenes a los lados. No es bueno.
Así que agregué
android:adjustViewBounds="true"
Mismo efecto, nada bueno. yo añadí
android:scaleType="centerInside"
Mismo efecto, no es bueno. Me cambié centerInside
a fitCenter
. Mismo efecto, nada bueno. Me cambié centerInside
a centerCrop
.
android:scaleType="centerCrop"
Ahora, finalmente, la imagen se escala al ancho de la pantalla, ¡pero se recorta en la parte superior e inferior! Así que me cambié centerCrop
a fitXY
.
android:scaleType="fitXY"
Ahora la imagen se escala al ancho de la pantalla pero no en el eje y, lo que resulta en una imagen distorsionada .
Eliminar android:adjustViewBounds="true"
no tiene ningún efecto. Agregar un android:layout_gravity
, como se sugiere en otra parte, nuevamente no tiene ningún efecto.
He probado otras combinaciones, sin éxito. Entonces, por favor, ¿alguien sabe?
¿Cómo se configura el XML de un ImageView para llenar el ancho de la pantalla, escalar una imagen más pequeña para llenar la vista completa, mostrando la imagen con su relación de aspecto sin distorsión ni recorte?
EDITAR: También intenté establecer una altura numérica arbitraria. Esto solo tiene efecto con la centerCrop
configuración. Distorsionará la imagen verticalmente según la altura de la vista.
android:scaleType="fitCenter"
?