2011-08-12 17 views
11

¿Me pueden ayudar a configurar mi diseño? Yo no logro lo que estoy buscando:Monte una ImageView (y su src) al ancho de la disposición y hacer su altura proporcional

He puesto el fondo imageview a rojo para explicar lo que quiero:

El ancho de la imagen es más pequeño que el ancho de la disposición. Me gustaría la imagen crecer proporcionalmente mantener su relación de aspecto hasta alcanzar el aspecto en la primera imagen (I modificado manualmente con photoshop) pero al establecer width = "fill_parent" el resultado es la segunda imagen y el establecimiento de la anchura y la altura a " fill_parent "el resultado es la tercera imagen.

me trató de combinar con ScaleType sin éxito

¿Cómo puedo lograr la primera opción? Gracias

enter image description here

Respuesta

2

utilizar el atributo fit_center en su etiqueta ImageView.

<ImageView ... android:scaleType="fitCenter" .. /> 
+0

Gracias por su rápida respuesta. Te refieres a android: scaleType = "fitCenter" ¿no? con esa opción y ambas dimensiones para fill_parent, el resultado es similar a la imagen 3 (con la imagen en el medio). Y por ejemplo, con height = "wrap_content" el resultado es la imagen 2 con el dibujable en el centro (horizontalmente) – Addev

+0

Uso "wrap_content" para ambos parámetros y añadir androide: layout_weight = "1" si está utilizando un LinearLayout –

14

Uso android:adjustViewBounds=true attr en XML para ImageView


Esta pregunta se resuelve aquí extendiendo la clase ImageView.

Android ImageView adjusting parent's height and fitting width


creé una muestra. Esto funciona para mi. Aquí está el archivo de diseño xml.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <ImageView android:src="@drawable/hydrangeas" 
     android:layout_height="wrap_content" android:id="@+id/imageView1" 
     android:scaleType="centerInside" 
     android:adjustViewBounds="true" 
     android:background="@android:color/white" 
     android:layout_width="wrap_content"/> 

</LinearLayout> 

Funciona para fitCenter también. Echa un vistazo a la instantánea.
With centerInside and adjustViewBounds="true"

+0

Realmente no entiendo cómo funciona AdjustViewBounds pero no alcanzo mi objetivo. ¿Puede explicarme un poco más cómo hacerlo? – Addev

+0

intente utilizar scaletype = centerInside junto con él. – Ronnie

+1

Hola, no funciona también en mi caso. La imagen más pequeña no se escala para ajustarse a la vista principal, pero quedan algunos bordes. –

Cuestiones relacionadas