android: Bild in der Bildansicht strecken, um es an den Bildschirm anzupassen


126

Ich habe eine imageview, deren Höhe und Breite auf fill_parenteine eingestellt ist linearlayout, bei der die gleichen Werte eingestellt sind. Ich nehme an, dies sollte meine Bilder so einstellen, dass sie zum Bildschirm passen. Aber es passt nur zu 80% (Rand oben und unten im Querformat).

Ich habe den folgenden Code ohne Erfolg ausprobiert:

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

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

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

Irgendwelche anderen Ideen?


Obwohl es sich um ein etwas anderes Problem handelt, sollte diese Antwort Ihnen helfen.
Fredley

Antworten:


317

um programmatisch zu ändern verwenden:

imgview.setScaleType(ScaleType.FIT_XY);

ODER

Um von XML zu wechseln, verwenden Sie:

 android:scaleType="fitXY"

26
Ich weiß, dass dies das ist, was Sie wollten, aber für Bilder, bei denen Sie sich für das Seitenverhältnis interessieren, wird dies es ausdehnen.
Artem Russakovskii

Wirkt Wunder für ImageView in einer ScrollView. Auch der Aspekt bleibt korrekt.
JNissi

10
Das gleiche kann im Layout xml, android definiert werden: scaleType = "fitXY"
Sathesh

9
Damit das Bild den gesamten Bereich ausfüllt und ein gutes Seitenverhältnis beibehält, verwenden Siev.setAdjustViewBounds(true); v.setScaleType(ImageView.ScaleType.CENTER_CROP);
Marco Florian

1
Funktioniert wie ein Zauber
Dave o Grady

119

Geben Sie in der XML-Datei Ihres Layouts android:scaleType="fitXY"
PS ein: Dies gilt, wenn das Bild mit eingestellt ist android:src="..."und nicht android:background="..."als Hintergrund, der standardmäßig so eingestellt ist, dass er gedehnt und an die Ansicht angepasst wird.


Die Hintergrundsache hat mir nicht geholfen, das Problem zu lösen. Mache ich etwas falsch? Bitte werfen Sie einen Blick auf: stackoverflow.com/questions/14164473/…
Dheeraj Bhaskar

1
Dies kümmert sich nicht um das Seitenverhältnis, wenn Sie die Breite der Bilder fest
codieren

Wie kann ich das dann auf den gesamten Bildschirm bringen? Ich möchte, dass es immer noch proportional ist
Ruchir Baronia

+1 für das Sagen gilt für Android: src = "..." und nicht für Android: background = "..." Dies ist sehr wichtig
DragonFire

20

benutze das:

ImageView.setAdjustViewBounds(true);

4
Dies in Kombination mit android:scaleType="fitXY"hat funktioniert. Danke
smac89

@ smac89 Was ist der Unterschied zwischen dieser Kombination und der Verwendung von FIT_CENTER? Sollte FIT_CENTER nicht verwendet werden?
Jenix

@Jenix, wohlgemerkt, es ist eine Weile her, seit ich Android das letzte Mal berührt habe, aber ich glaube, der Grund dafür fitXYist, dass das Bild proportional gedehnt wird, um zu dem Rahmen / der Ansicht zu passen, in dem es eingestellt wurde. Wenn Sie FIT_CENTERSounds verwenden, wird das Bild einfach platziert in der Mitte der Ansicht, füllt die Ansicht jedoch nicht aus. Ich kann mich irren, aber Sie können mit beiden experimentieren, um herauszufinden, was funktioniert
smac89

@ smac89 Bevor ich gefragt habe, habe ich beide bereits getestet und es hat trotzdem funktioniert. Ich war neugierig auf den Grund, aber jetzt denke ich, dass Sie FIT_CENTER nicht kannten, genauso wie die Tatsache, dass ich nicht über die Kombination Bescheid wusste, die Sie mir mitgeteilt haben. :)
Jenix

9

Wenn Sie verwenden android:scaleType="fitXY", müssen Sie angeben

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

Wenn Sie wrap_content verwenden, wird es nicht auf das ausgedehnt, was Sie benötigen

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

7

Die akzeptierte Antwort ist perfekt. Wenn Sie sie jedoch über XML ausführen möchten, können Sie sie verwenden android:scaleType="fitXY"


2

Ich habe diesen android:scaleType="fitXY"Code in der XML-Datei verwendet.


0

Ändern Sie einfach Ihre ImageView-Höhe und -Breite in wrap_content und verwenden Sie sie

exampleImage.setScaleType (ImageView.ScaleType.FIT_XY);

in Ihrem Code.


-11

Versuch mit:

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

Dadurch wird Ihre Bildansicht mit dem richtigen Verhältnis auf den Bildschirm angepasst.


12
"imageview.setFitToScreen (true);" - was ist das? eine undokumentierte Methode?
Malachiasz

Ich benutze Eclipse und dies kompiliert nicht:imageview.setFitToScreen(true)
Lerner

5
Es gibt keine solche Methode im Android.
NightFury

Vielleicht meinte er setFitsSystemWindows()?
Ban-Geoengineering
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.