Bildansicht: adjustViewBounds funktioniert nicht mit layout_height="fill_parent"?
Ich versuche Platz in der einzigen Zeile, in der der EditText
mit der ImageView
auf der linken Seite. Aber ich kann nicht das Bild skaliert werden, die ordnungsgemäß entsprechend der Höhe der Eingabe von text.
Das layout ist einfach:
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:adjustViewBounds="true"
android:scaleType="fitStart"
android:background="#f00"
android:src="@drawable/icon" />
<EditText
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
(Ich hervorgehoben, Bildhintergrund durch die rote Farbe, um die tatsächlichen Speicherplatz durch Bildansicht)
Wenn ich geben Sie die genaue Höhe für ImageView
:
android:layout_height="48dp"
dann bekomme ich den nächsten Blick, was ich brauchte:
Aber ich weiß nicht die genaue Höhe EditText
, so kann ich nicht angeben, es für ImageView
hier.
Wenn Sie die Höhe für ImageView
angegeben ist, zu füllen Ihre Eltern (entsprechend `EditText` Höhe):
android:layout_height="fill_parent"
dann bekomme ich unerwartete extra-Marge zwischen Bild und text Eintrag:
Tatsächlich, in diesem Fall die ImageView
Breite entspricht, nicht skalierten Bildes Breite, in der Erwägung, dass das Bild skaliert wurde.
Es ist das ähnlich wie das Bild unten gezeigt, wenn ich angeben layout_height
zu 48dp
- und set - adjustViewBounds
zu false
:
android:layout_height="48dp"
android:adjustViewBounds="false"
So, die Frage ist hier: wie definieren Sie das layout korrekt zu skalieren das Bild passend Eintrag Bearbeiten Höhe und in der gleichen Zeit, haben Breite ImageView
verkleinert werden, um skalierte Bildbreite ? In anderen Worten, wie, um loszuwerden, diese extra-Raum aus?
- versuchen Sie es mit android:layout_marginBottom="10dip" für Bildansicht
- Wie würde es helfen? Ich werde kleineres Bild, aber mit den gleichen zusätzlichen Raum um.
- Versuchen Sie es mit scaleType="fitXY" und height="fill_parent" für die Bildansicht.
- Dann verliere ich die richtigen Proportionen des Bildes. Weil, mit der Einstellung die du vorgeschlagen wird das Bild vertikal skalieren nur.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ein LinearLayout bug. Wenn man sich
forceUniformHeight
in der Quelle hier. Sie können sehen, dass für die Größenänderung Kind Ansichten, die Versorgungmatch_parent
als die Höhe, wenn das LinearLayout ist festgelegtwrap_content
, das LinearLayout vorgibt, eine absolute Höhe, rechnet das Kind die Höhe und dann verwendet das Kind die Breite von den vorherigen Messen-pass. Im Grunde Ihres Bildes ist die Berechnung der Höhe und Breite frei und immer Standard-Breite und Höhe, und dann mit Höhe neu berechnet, sondern gezwungen sind, verwenden Sie die alte Breite. Geben Sie eine Höhe oder außer Kraft zu setzen einige AnzeigenonMeasures
können Sie auch die Schwerkraft zentriert werden, auf die lineare layout
BEACHTEN Sie: Sie sollten auch verschiedene Bilder haben in drawables-hdpi/ldpi und mdpi