Cómo crear un ImageView que llena la altura de los padres y muestra una imagen lo más grande posible?
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 aparece ahora en la esquina superior izquierda de ImageView. ¿Hay una manera de hacer que la imagen llene toda la altura que sea posible y, a continuación, ajustar el ancho de la vista para habilitar la ampliación de la imagen sin cambiar la proporción ascendente?
- Android ExpandableListView y onChildClick no funciona
- Android en la vista eliminado de los padres
- Incluyendo las actividades de Android (y sus diseños) en archivos JAR
- ImageView - Zoom en estiramiento o despliegue hacia abajo
- Obtener Vista para el elemento ListView / orden inversa en 2.2; Funciona en 4.0.3
La imagen llena todo el espacio en una pantalla estándar, pero en una resolución WVGA la imagen sólo ocupa la mitad de la altura real del ImageView.
- imagen de ajuste de androide en imagen
- Agregando un niño en un GestureOverlayView en el punto donde toqué en android?
- Widgets de Android: Cómo agregar vistas a RemoteViews en tiempo de ejecución
- Optimizaciones de Scrollview
- archivo interno del HTML de la demostración del androide
- Arquitectura de la GUI de Android - relación entre Superficie / vista / ventana / lienzo
- Arrastrar y soltar en android 3.x causa illegalStateException después de pequeño número en arrastra
- Obtener la vista de RecyclerView por AdapterPosition
Básicamente la respuesta aquí es que no hay un valor predefinido para lo que está tratando de lograr. La solución es crear una Matrix
que se ajuste a sus necesidades y llamar a setImageMatrix(matrix)
en su ImageView
.
Si te entiendo correctamente, lo que necesitas usar es el centerCrop
centerCrop. 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 dijiste, 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 encaja, simplemente se recorta. La gravedad es, por supuesto, el center
. Lo 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" />
Puede cambiar el tipo de escala a fitXY mediante una llamada a
imageView.setScaleType(ScaleType.FIT_XY);
Simplemente hazlo en xml como
android:scaleType="fitXY"
- ¿Cómo puedo mostrar la ubicación actual en un Google Map en Android Marshmallow?
- Iniciar un servicio desde la actividad