2011-12-09 8 views
12

He fijado mi ImageView como la siguiente:¿Cómo se cambia el tamaño de 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"/> 

en cuenta que layout_width se fija a 60dp. Dependiendo del contenido que adquirí en línea, quiero cambiar el tamaño de este ancho a 90dp, o 120dp (manteniendo la relación de aspecto de la imagen).

Intenté usar setLayoutParams, pero pasando LayoutParams (120, LayoutParams.WRAP_CONTENT) arroja una excepción. No parece gustarle

Si es posible, estoy tratando de evitar hacer otro ImageView para tamaños más grandes.

Respuesta

32

Si está trabajando con una vista existente puede ser mucho trabajo crear un nuevo conjunto de LayoutParams desde cero. En su lugar - se puede agarrar LayoutParams existentes de la vista, editarlos, y luego aplicarlos a la vista para actualizar sus LayoutParams usando 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); 

Asegúrese de importar el tipo correcto de LayoutParams. En este caso, como ha comentado, puede usar el LayoutParams de ViewGroup. Si estuviera configurando parámetros específicos para cierto tipo de vista (por ejemplo, alineaciones en RelativeLayout s), tendría que importar el LayoutParams de ese tipo de vista.

+1

Parece que funciona de esta manera. Usé los LayoutParams de ViewGroup. Parece que funciona bien. ¡Gracias! :) – atedja

+2

@alnite - Me alegro de haber ayudado. Gracias por dejarme saber sobre 'ViewGroup', edité la respuesta para reflejar. –

5

puede hacerlo todo como

ImageView imageView = findViewById(R.id.dl_image); 
imageView.getLayoutParams().width = 120; 
Cuestiones relacionadas