2011-12-09 17 views
12

Ho installato il mio ImageView come la seguente:Come si modifica la dimensione di un ImageView?

<ImageView android:id="@+id/dl_image" 
       android:layout_width="60dp" 
       android:background="@drawable/pictureframe" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="10dp" 
       android:layout_alignParentLeft="true" 
       android:layout_centerVertical="true" 
       android:adjustViewBounds="true" 
       android:scaleType="fitCenter"/> 

noti che layout_width è fissato a 60dp. A seconda del contenuto che ho acquistato online, desidero ridimensionare questa larghezza a 90 dpi o 120 dpi (mantenendo le proporzioni dell'immagine).

Ho provato a utilizzare setLayoutParams, ma passare LayoutParams (120, LayoutParams.WRAP_CONTENT) genera un'eccezione. Non sembra piacergli.

Se possibile, sto cercando di evitare di creare un altro ImageView per dimensioni maggiori.

risposta

32

Se si sta lavorando con una vista esistente, può essere molto faticoso creare un nuovo set di LayoutParams da zero. Invece - si può afferrare LayoutParams esistenti della vista, modificarli, e poi applicarli al fine di aggiornare i suoi LayoutParams utilizzando setLayoutParams()

ImageView imageView = findViewById(R.id.dl_image); 
LayoutParams params = (LayoutParams) imageView.getLayoutParams(); 
params.width = 120; 
// existing height is ok as is, no need to edit it 
imageView.setLayoutParams(params); 

Assicurarsi di importare il tipo corretto di LayoutParams. Per questo caso, come hai commentato, puoi semplicemente usare lo LayoutParams di uno ViewGroup. Se stavi impostando parametri specifici per un certo tipo di vista (ad esempio allineamenti in RelativeLayout s) dovresti importare lo LayoutParams di quel tipo di vista.

+1

Sembra che funziona in questo modo. Ho usato ViewGar's LayoutParams. Sembra funzionare bene. Grazie! :) – atedja

+2

@alnite - Sono contento di aver aiutato. Grazie per avermi informato su 'ViewGroup', modificato la risposta per riflettere. –

5

si può fare tutto piace

ImageView imageView = findViewById(R.id.dl_image); 
imageView.getLayoutParams().width = 120; 
Problemi correlati