2010-11-24 17 views
20

que tienen un ImageView que se define de la siguiente manera:¿Cómo crear una vista de imagen que llene la altura de los padres y muestre una imagen lo más grande posible?

<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"/> 

Ahora después de descargar un nuevo mapa de bits cambio la estirable. La imagen ahora aparece en la esquina superior izquierda de ImageView. ¿Hay alguna manera de que la imagen ocupe toda la altura posible y luego ajuste el ancho de la vista para permitir escalar la imagen sin cambiar la proporción ascpect?

La imagen llena todo el espacio en una pantalla estándar pero en una resolución WVGA la imagen toma solo la mitad de la altura real de ImageView.

Respuesta

1

Básicamente la respuesta aquí es que no hay un valor predefinido para lo que está tratando de lograr. La solución es crear un Matrix que se ajuste a sus necesidades y llame al setImageMatrix(matrix) en su ImageView.

8

Puede cambiar de tipo de escala a través de llamada a fitXY

imageView.setScaleType(ScaleType.FIT_XY); 
+12

Eso ScaleType hace cambiar la relación de aspecto, que es lo Janusz trata de evitar. – mreichelt

36

Si lo entiendo correctamente, lo que necesita utilizar es centerCrop scaleType. fitStart escala la imagen proporcionalmente, pero ni el ancho ni la altura excederán el tamaño de la vista, y la imagen tendrá, como usted dijo, una gravedad de top|left.

El uso de centerCrop escala la imagen proporcionalmente, pero hace que el borde más corto de la imagen coincida con el tamaño de la vista, y si hay datos adicionales en el lado largo que no encajan, simplemente se recorta. La gravedad es, por supuesto, center. La continuación trabajó para mí:

<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

simplemente lo hacen en XML como

android:scaleType="fitXY" 
Cuestiones relacionadas