Oft gefragt, nie beantwortet (zumindest nicht reproduzierbar).
Ich habe eine Bildansicht mit einem Bild, das kleiner als die Ansicht ist. Ich möchte das Bild auf die Breite des Bildschirms skalieren und die Höhe der Bildansicht anpassen, um die proportional korrekte Höhe des Bildes wiederzugeben.
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
Dies führt dazu, dass das Bild in seiner ursprünglichen Größe (kleiner als die Bildschirmbreite) mit seitlichen Rändern zentriert wird. Nicht gut.
Also habe ich hinzugefügt
android:adjustViewBounds="true"
Gleicher Effekt, nicht gut. Ich fügte hinzu
android:scaleType="centerInside"
Gleicher Effekt, nicht gut. Ich wechselte centerInside
zu fitCenter
. Gleicher Effekt, nicht gut. Ich wechselte centerInside
zu centerCrop
.
android:scaleType="centerCrop"
Jetzt wird das Bild endlich auf die Breite des Bildschirms skaliert - aber oben und unten beschnitten ! Also wechselte ich centerCrop
zu fitXY
.
android:scaleType="fitXY"
Jetzt wird das Bild auf die Breite des Bildschirms skaliert, jedoch nicht auf der y-Achse, was zu einem verzerrten Bild führt.
Das Entfernen android:adjustViewBounds="true"
hat keine Auswirkung. Das Hinzufügen von android:layout_gravity
, wie an anderer Stelle vorgeschlagen, hat wiederum keine Auswirkung.
Ich habe andere Kombinationen ausprobiert - ohne Erfolg. Also, bitte weiß jemand:
Wie richten Sie das XML einer ImageView so ein, dass es die Breite des Bildschirms ausfüllt, skalieren Sie ein kleineres Bild, um die gesamte Ansicht auszufüllen, und zeigen Sie das Bild mit seinem Seitenverhältnis ohne Verzerrung oder Zuschneiden an?
EDIT: Ich habe auch versucht, eine beliebige numerische Höhe einzustellen. Dies wirkt sich nur auf die centerCrop
Einstellung aus. Das Bild wird entsprechend der Ansichtshöhe vertikal verzerrt.
android:scaleType="fitCenter"
?