android: allunga l'immagine in imageview per adattarla allo schermo


126

Ho un imageviewche ha la sua altezza e larghezza impostate fill_parentcon un linearlayoutche ha gli stessi valori impostati. Quindi suppongo che questo dovrebbe impostare le mie immagini per adattarsi allo schermo. Ma si adatta solo all'80% (margine superiore e inferiore in modalità orizzontale).

Ho provato il seguente codice senza successo:

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

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

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

Altre idee?


Sebbene sia un problema leggermente diverso, questa risposta dovrebbe aiutarti.
Fredley,

Risposte:


317

per cambiare pro-grammaticamente usare:

imgview.setScaleType(ScaleType.FIT_XY);

O

per cambiare da xml usare:

 android:scaleType="fitXY"

26
So che questo è quello che volevi, ma per le immagini a cui tieni le proporzioni, questo si allungherà.
Artem Russakovskii,

Funziona a meraviglia per ImageView all'interno di ScrollView. Anche l'aspetto è mantenuto corretto.
JNissi,

10
Lo stesso può essere definito nel layout xml, android: scaleType = "fitXY"
Sathesh,

9
Per fare in modo che l'immagine riempia tutta l'area e mantenga una buona proporzione, usav.setAdjustViewBounds(true); v.setScaleType(ImageView.ScaleType.CENTER_CROP);
Marco Florian,

1
Funziona come un incanto
dave o grady il

119

Dai nel file xml del tuo layout android:scaleType="fitXY"
PS: questo si applica a quando l'immagine è impostata android:src="..."piuttosto che android:background="..."quando gli sfondi sono impostati di default per allungarsi e adattarsi alla vista.


la cosa di fondo non mi ha aiutato a risolvere il problema, sto facendo qualcosa di sbagliato? si prega di dare un'occhiata a: stackoverflow.com/questions/14164473/…
Dheeraj Bhaskar

1
Questo non si occupa delle proporzioni se si codifica la larghezza delle immagini e si desidera ridimensionare l'altezza
Akshat Agarwal,

Come posso ottenere questo per adattarsi a tutto lo schermo allora? Voglio che sia ancora proporzionale
Ruchir Baronia,

+1 per dirlo si applica ad Android: src = "..." anziché Android: background = "..." questo è molto importante
DragonFire,

20

Usa questo:

ImageView.setAdjustViewBounds(true);

4
Questo in combinazione con android:scaleType="fitXY"è ciò che ha funzionato. Grazie
smac89,

@ smac89 Qual è la differenza tra quella combinazione e il solo utilizzo di FIT_CENTER? Non dovresti usare FIT_CENTER?
Jenix

@Jenix, bada che è passato un po 'di tempo dall'ultima volta che ho toccato Android, ma credo che il motivo per farlo fitXYsia che l'immagine sia allungata in modo proporzionale per adattarsi al frame / vista in cui è stata impostata. L'uso di FIT_CENTERsuoni come se posizionasse semplicemente l'immagine al centro della vista ma non riempie la vista. Potrei sbagliarmi, ma puoi provare entrambi per scoprire cosa funziona
smac89

@ smac89 Prima di chiedere ho già provato entrambi e ha funzionato allo stesso modo. Ero curioso del motivo, ma ora penso che non conoscessi FIT_CENTER proprio come il fatto che non sapevo della combinazione che mi hai fatto sapere. :)
Jenix

9

se usi android:scaleType="fitXY"allora devi specificare

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

se usi wrap_content non si estenderà alle tue necessità

<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

La risposta accettata è perfetta, tuttavia se si desidera farlo da XML, è possibile utilizzare android:scaleType="fitXY"


2

Ho usato questo android:scaleType="fitXY"codice nel file Xml.


0

basta modificare l'altezza e la larghezza di ImageView in wrap_content e utilizzare

exampleImage.setScaleType (ImageView.ScaleType.FIT_XY);

nel tuo codice.


-11

Prova usando:

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

In questo modo la visualizzazione dell'immagine verrà adattata allo schermo con il rapporto corretto.


12
"imageview.setFitToScreen (true);" - Cos'è quello? qualche metodo non documentato?
Malachiasz,

Sto usando eclipse e questo non viene compilato:imageview.setFitToScreen(true)
studente

5
Non esiste un metodo simile in questo Android.
NightFury

Forse intendeva setFitsSystemWindows()??
divieto di geoingegneria il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.