En Android, he definido un ImageView
's layout_width
de ser fill_parent
(que ocupa todo el ancho del teléfono).
Si la imagen que coloco ImageView
es más grande que la de layout_width
Android, la escalará, ¿verdad? ¿Pero qué hay de la altura? Cuando Android escala la imagen, ¿mantendrá la relación de aspecto?
Lo que descubrí es que hay un espacio en blanco en la parte superior e inferior de ImageView
cuando Android escala una imagen que es más grande que la ImageView
. ¿Es eso cierto? En caso afirmativo, ¿cómo puedo eliminar ese espacio en blanco?
setImageBitmap
es lo mismoandroid:src="..."
ysetBackground...
esandroid:background="..."
image.setImageDrawable(...)
estáandroid:src="..."
en xml.android:adjustViewBounds
fue la última pieza de mi rompecabezas, gracias!Ver
android:adjustViewBounds
.fuente
Para cualquier otra persona que tenga este problema en particular. Tiene un valor del
ImageView
que desea tener un anchofill_parent
y una altura escalados proporcionalmente:Agregue estos dos atributos a su
ImageView
:Y establezca el
ImageView
anchofill_parent
y la altura enwrap_content
.Además, si no desea que se recorte su imagen, intente esto:
fuente
View
)". AFAICT ninguna otra vista tieneadjustViewBounds
oscaleType
atributos.Si desea
ImageView
que ambas escalen hacia arriba y hacia abajo manteniendo la relación de aspecto adecuada, agregue esto a su XML:Agregue esto a su código:
Me tomó un tiempo hacer que esto funcionara, pero parece funcionar en los casos en que la imagen es más pequeña que el ancho de la pantalla y más grande que el ancho de la pantalla, y no encajona la imagen.
fuente
Esto funcionó para mí:
fuente
esto resolvió mi problema
fuente
Debajo del código Trabajando para escalar la imagen como relación de aspecto:
fuente
Eche un vistazo a ImageView.ScaleType para controlar y comprender la forma en que se realiza el cambio de tamaño en un
ImageView
. Cuando se cambia el tamaño de la imagen (manteniendo su relación de aspecto), es probable que la altura o el ancho de la imagen sean más pequeños queImageView
las dimensiones.fuente
Use estas propiedades en ImageView para mantener la relación de aspecto:
fuente
Así es como funcionó para mí dentro de un RestraintLayout:
Luego, en el código, configuré el dibujable como:
Esto se adapta muy bien a la imagen según su relación de aspecto y la mantiene en el centro.
fuente
Tengo una imagen más pequeña que la pantalla. Para extenderlo proporcionalmente al máximo y centrarlo en la vista, tuve que usar el siguiente código:
Sin embargo, tenga en cuenta que si tiene un diseño relativo y tiene algunos elementos configurados para estar por encima o por debajo de ImageView, lo más probable es que se superpongan con la imagen.
fuente
Si la calidad de la imagen disminuye en: uso
en vez de
fuente
Para cualquiera de ustedes que quiera que la imagen se ajuste exactamente a la vista de la imagen con la escala adecuada y sin uso de recorte
donde imageView es la vista que representa su ImageView
fuente
Puedes calcular el ancho de la pantalla. Y puedes escalar el mapa de bits.
calcule el ancho de pantalla y la altura de la imagen a escala por el ancho de la pantalla
Después de que pueda escalar el mapa de bits.
fuente
Al hacer esto programáticamente, asegúrese de llamar a los setters en el orden correcto:
fuente
Si desea que su imagen ocupe el máximo espacio posible, entonces la mejor opción sería
fuente
No necesitas ningún código java. Sólo tienes que :
La clave está en el elemento primario coincidente para ancho y alto
fuente
Intente usar
android:layout_gravity
para ImageView:El ejemplo anterior funcionó para mí.
fuente
Tengo un algoritmo para escalar un mapa de bits para que se ajuste mejor a las dimensiones del contenedor, manteniendo su relación de aspecto. Encuentra mi solución aquí
Espero que esto ayude a alguien por el camino!
fuente
Yo uso esto:
fuente
en caso de usar
cardview
para redondearimageview
y corregir elandroid:layout_height
encabezado, esto funcionó para mí para cargar la imagen conGlide
fuente
Puede escalar la imagen que también reducirá el tamaño de su imagen. Hay una biblioteca que puede descargar y usar. https://github.com/niraj124124/Images-Files-scale-and-compress.git
Cómo usar 1) Importar el compresor-v1.0. jar a su proyecto. 2) Agregue el siguiente código de muestra para probar. ResizeLimiter resize = ImageResizer.build (); resize.scale ("inputImagePath", "outputImagePath", imageWidth, imageHeight); Existen muchos más métodos de acuerdo a sus requerimientos.
fuente
Pase su ImageView y, según la altura y el ancho de la pantalla, puede hacerlo
fuente
Respuesta rápida:
fuente
fuente