Cómo escalar una imagen en ImageView para mantener la relación de aspecto

Resuelto michael asked hace 54 años • 26 respuestas

En Android, definí un ImageView's layout_widthto be fill_parent(que ocupa todo el ancho del teléfono).

Si la imagen que le pongo ImageViewes más grande que layout_width, Android la escalará, ¿verdad? Pero ¿qué pasa con la altura? Cuando Android escale la imagen, ¿mantendrá la relación de aspecto?

Lo que descubrí es que hay un espacio en blanco en la parte superior e inferior ImageViewcuando Android escala una imagen que es más grande que el archivo ImageView. ¿Es eso cierto? En caso afirmativo, ¿cómo puedo eliminar ese espacio en blanco?

michael avatar Jan 01 '70 08:01 michael
Aceptado
  1. Sí, de forma predeterminada, Android reducirá la escala de su imagen para que se ajuste a ImageView, manteniendo la relación de aspecto. Sin embargo, asegúrese de configurar la imagen en ImageView usando android:src="..."en lugar de android:background="...". src=hace que escale la imagen manteniendo la relación de aspecto, pero background=hace que escale y distorsione la imagen para que se ajuste exactamente al tamaño de ImageView. (Sin embargo, puedes usar un fondo y una fuente al mismo tiempo, lo que puede ser útil para cosas como mostrar un marco alrededor de la imagen principal, usando solo un ImageView).

  2. También debería intentar android:adjustViewBoundshacer que ImageView cambie de tamaño para adaptarse a la imagen reescalada. Por ejemplo, si tiene una imagen rectangular en lo que normalmente sería un ImageView cuadrado, ajustarViewBounds=true hará que cambie el tamaño del ImageView para que también sea rectangular. Esto luego afecta la forma en que se distribuyen otras vistas alrededor de ImageView.

    Luego, como escribió Samuh, puede cambiar la forma predeterminada en que escala las imágenes usando el android:scaleTypeparámetro. Por cierto, ¡la forma más fácil de descubrir cómo funciona esto hubiera sido simplemente experimentar un poco tú mismo! Sólo recuerde mirar los diseños en el propio emulador (o en un teléfono real), ya que la vista previa en Eclipse suele ser incorrecta.

Steve Haley avatar Mar 26 '2010 15:03 Steve Haley

Ver android:adjustViewBounds.

Establezca esto en verdadero si desea que ImageView ajuste sus límites para preservar la relación de aspecto de su elemento de diseño.

Gratzi avatar Jul 08 '2010 12:07 Gratzi