Spesso chiesto, non ha mai risposto (almeno non in modo riproducibile).Android ImageView ridimensiona l'immagine in larghezza con altezza flessibile senza ritaglio o distorsione
Ho una visualizzazione immagine con un'immagine che è più piccola rispetto alla visualizzazione. Voglio ridimensionare l'immagine alla larghezza dello schermo e regolare l'altezza di ImageView per riflettere l'altezza proporzionalmente corretta dell'immagine.
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
Ciò comporta l'immagine centrata nelle sue dimensioni originali (più piccolo della larghezza dello schermo) con margini laterali. Non buono.
così ho aggiunto
android:adjustViewBounds="true"
Stesso effetto, non va bene. Ho aggiunto
android:scaleType="centerInside"
Stesso effetto, non va bene. Ho cambiato centerInside
a fitCenter
. Lo stesso effetto, non va bene. Ho cambiato centerInside
a centerCrop
.
android:scaleType="centerCrop"
Ora, finalmente, l'immagine è scalato alla larghezza dello schermo - ma ritagliata in alto e in basso! Così ho cambiato centerCrop
in fitXY
.
android:scaleType="fitXY"
Ora l'immagine viene adattata alla larghezza dello schermo, ma non scalato sulla y, risultando in un Immagine distorta.
La rimozione di android:adjustViewBounds="true"
non ha alcun effetto. L'aggiunta di un android:layout_gravity
, come suggerito altrove, non ha di nuovo alcun effetto.
Ho provato altre combinazioni - inutilmente. Quindi, per favore qualcuno sa:
Come si imposta l'XML di un ImageView per riempire la larghezza dello schermo, ridimensionare un'immagine più piccola per riempire l'intera vista, visualizzando l'immagine con il suo rapporto aspetto senza distorsione o ritaglio?
MODIFICA: ho anche provato a impostare un'altezza numerica arbitraria. Questo ha effetto solo con l'impostazione centerCrop
. Distorcerà l'immagine verticalmente in base all'altezza della vista.
Hai provato 'Android: scaleType = "fitCenter"'? – MCeley
@MCeley hai? (spoiler: non funziona.) – BrainSlugs83
@ BrainSlugs83 Ho e funziona per me, ancora. Inoltre, è stata posta la domanda per determinare ciò che il richiedente aveva provato. Non è necessario per l'ansia, soprattutto non sette mesi dopo che è stato pubblicato. – MCeley