2011-01-27 19 views
9

¿Cómo se establece programáticamente el ancho de un ImageView dentro de un TableRow? NO quiero que cambie el ancho de la celda, solo el ancho de la imagen dentro de la celda.Android: cómo establecer programáticamente el ancho de ImageView dentro de TableRow

Disposición: (Los puntos suspensivos están ahí para reducir el código)

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal"> 
<TableRow android:gravity="center_vertical"> 
<Button>...</Button> 
<ImageView 
    android:id="@+id/fruit" 
    android:layout_width="120dp" 
    android:layout_height="44dp" 
    android:src="@drawable/apple" 
    android:scaleType="matrix" 
></ImageView> 
<Button>...</Button> 
</TableRow> 
<TableRow>...</TableRow> 
</TableLayout> 

Java:

ImageView iv = (ImageView) findViewById(R.id.fruit); 
LayoutParams frame = iv.getLayoutParams(); 
frame.width = 100; 
iv.setLayoutParams(frame); 

EDITAR: Quiero que la imagen a recortar dentro de los límites que configuro y que la celda de la tabla sea el ancho original. A continuación se muestra el ejemplo de código que funcionó para mí gracias a la sugerencia de parag:

Bitmap bmp = BitmapFactory.decodeResource(getResources() , R.drawable.apple); 
int width = 50; 
int height = 44; 
Bitmap resizedbitmap = Bitmap.createBitmap(bmp, iv.getScrollX(), iv.getScrollY(), width, height); 
iv.setImageBitmap(resizedbitmap); 

Respuesta

31

Otra forma en que cambia el tamaño del mapa de bits u

ImageView img=(ImageView)findViewById(R.id.ImageView01); 
    Bitmap bmp=BitmapFactory.decodeResource(getResources(), R.drawable.sc01); 
    int width=200; 
    int height=200; 
    Bitmap resizedbitmap=Bitmap.createScaledBitmap(bmp, width, height, true); 
    img.setImageBitmap(resizedbitmap); 
+0

exactamente lo que necesitaba – keybee

2

¿Desea ampliar la imagen? ¿O recortarlo?

Para escalar, pruebe ImageView. setImageMatrix y Matrix. preScale.

Si no quiere descubrir las matrices, puede probar Rectos (cuadros delimitadores). Obtenga el rect original con ImageView. getDrawingRect y luego defina el Rect que desee y use Matrix. setRectToRect para crear su matriz de imágenes.

De lo contrario, ha intentado ImageView. setMaxWidth?

+0

trabajo aún no ha setMaxWidth. Intenté tu sugerencia, pero Matrix.setRectToRect requiere un Bitmap.Config que escala la imagen. – caseadilla

Cuestiones relacionadas