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?


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"

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.


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);

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


2

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


0

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

exampleImage.setScaleType (ImageView.ScaleType.FIT_XY);

en tu código


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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.