Android: estirar la imagen en la vista de imagen para que se ajuste a la pantalla

126

Tengo un imageviewque tiene su altura y ancho establecidos fill_parentcon un linearlayoutque tiene los mismos valores establecidos. Así que supongo que esto debería configurar mis imágenes para que se ajusten a la pantalla. Pero solo se ajusta al 80% (margen superior e inferior en modo horizontal).

He intentado el siguiente código sin éxito:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();

imgView.setMinimumWidth(width);
imgView.setMinimumHeight(height);

imgView.setMaxWidth(width);
imgView.setMaxHeight(height);

¿Alguna otra idea?

Johan
fuente
Aunque es un problema ligeramente diferente, esta respuesta debería ayudarte.
fredley

Respuestas:

317

para cambiar el uso programático:

imgview.setScaleType(ScaleType.FIT_XY);

O

para cambiar el uso de xml:

 android:scaleType="fitXY"
Pinki
fuente
26
Sé que esto es lo que querías, pero para las imágenes en las que te importa la relación de aspecto, esto se extenderá.
Artem Russakovskii
Funciona de maravilla para ImageView dentro de un ScrollView. Incluso el aspecto se mantiene correcto.
JNissi
10
Lo mismo se puede definir en el diseño xml, android: scaleType = "fitXY"
Sábado
9
Para hacer que la imagen llene toda el área y mantenga una buena relación de aspecto, usev.setAdjustViewBounds(true); v.setScaleType(ImageView.ScaleType.CENTER_CROP);
Marco Florian
1
Funciona como un encanto
dave o grady
119

Entregue el archivo xml de su diseño android:scaleType="fitXY"
PS: esto se aplica a cuando la imagen se configura en android:src="..."lugar de android:background="..."como los fondos están configurados de forma predeterminada para estirarse y ajustarse a la Vista.

Sen
fuente
lo de fondo no me ayudó a resolver el problema, ¿estoy haciendo algo mal? eche un vistazo a: stackoverflow.com/questions/14164473/…
Dheeraj Bhaskar
1
Esto no se ocupa de la relación de aspecto si codifica el ancho de las imágenes y desea que la altura se
ajuste
¿Cómo puedo hacer que esto se ajuste a toda la pantalla entonces? Quiero que siga siendo proporcional
Ruchir Baronia
+1 por decirlo se aplica a android: src = "..." en lugar de android: background = "..." esto es muy importante
DragonFire
20

utilizar este:

ImageView.setAdjustViewBounds(true);
Lalit Kumar
fuente
44
Esto en combinación con android:scaleType="fitXY"es lo que funcionó. Gracias
smac89
@ smac89 ¿Cuál es la diferencia entre esas combinaciones y solo usar FIT_CENTER? ¿No debería usar FIT_CENTER?
Jenix
@Jenix, ten en cuenta que ha pasado un tiempo desde la última vez que toqué Android, pero creo que la razón para hacerlo fitXYes que la imagen se estira proporcionalmente para ajustarse al marco / vista en la que se configuró. El uso de FIT_CENTERsonidos simplemente colocará la imagen en el centro de la vista pero no llena la vista. Puedo estar equivocado, pero se puede experimentar con cualquiera de averiguar lo que funciona
smac89
@ smac89 Antes de preguntar, ya los probé a ambos y funcionó igual. Tenía curiosidad sobre el motivo, pero ahora creo que no conocías FIT_CENTER al igual que el hecho de que no sabía sobre la combinación que me hiciste saber. :)
Jenix
9

si usa android:scaleType="fitXY"entonces debe especificar

android:layout_width="75dp" y android:layout_height="75dp"

si usa wrap_content no se extenderá a lo que necesita

<ImageView
android:layout_width="75dp"
android:layout_height="75dp"
android:id="@+id/listItemNoteImage"
android:src="@drawable/MyImage"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_marginStart="12dp"
android:scaleType="fitXY"/>
Ozear
fuente
7

La respuesta aceptada es perfecta, sin embargo, si desea hacerlo desde xml, puede usar android:scaleType="fitXY"

Bibaswann Bandyopadhyay
fuente
2

He usado este android:scaleType="fitXY"código en el archivo Xml.


fuente
0

simplemente cambie su altura y ancho de ImageView a wrap_content y use

exampleImage.setScaleType (ImageView.ScaleType.FIT_XY);

en tu código

Ankur Yadav
fuente
-11

Intentando usar:

imageview.setFitToScreen(true);
imageview.setScaleType(ScaleType.FIT_CENTER);

Esto ajustará su vista de imagen a la pantalla con la proporción correcta.

Lincy
fuente
12
"imageview.setFitToScreen (verdadero);" - ¿que es eso? algún método indocumentado?
Malachiasz
Estoy usando eclipse y esto no compila:imageview.setFitToScreen(true)
alumno
55
No existe un método como este en Android.
NightFury
¿Quizás quiso decir setFitsSystemWindows()?
prohibición de geoingeniería