studio setscaletype adjust android layout scaling imageview

setscaletype - resize imageview android



¿Cómo crear una vista de imagen que llene la altura de los padres y muestre una imagen lo más grande posible? (4)

Tengo un ImageView que se define de la siguiente manera:

<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 el dibujable. 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.


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


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

imageView.setScaleType(ScaleType.FIT_XY);


Si lo entiendo correctamente, lo que necesita usar es el 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 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 . El siguiente funcionó 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" />


simplemente hazlo en xml como

android:scaleType="fitXY"