2010-11-11 19 views
1

J'ai un TableLayout avec 3 TableRows, chaque TableRow a 3 ImageViews. Chaque imageView a le type fitCenter for Scale, et un poids et une largeur par ce stackoverflow answer. Maintenant, toutes les images s'adaptent à la rangée, mais chaque rangée est plus grande que nécessaire. Voici un extrait du xml:Les hauteurs de TableRow sont coupées

<TableLayout android:id="@+id/TableLayout01" 
android:layout_height="wrap_content" 
android:padding="10dip" 
android:stretchColumns="0,1,2" 
android:shrinkColumns="0,1,2" 
android:layout_weight="1" 
android:layout_width="wrap_content"> 
    <TableRow android:id="@+id/TableRow01" 
    android:layout_width="fill_parent" 
    android:layout_gravity="center_vertical|center_horizontal" 
    android:baselineAligned="false" 
    android:gravity="center_vertical|center_horizontal" 
    android:layout_height="wrap_content"> 
     <ImageView android:id="@+id/image1" 
     android:src="@drawable/avocado3" 
     android:scaleType="fitCenter" 
     android:layout_width="0dip" 
     android:layout_weight="1" 
     android:layout_height="wrap_content"/> 
     <ImageView android:id="@+id/image2" 
     android:src="@drawable/avocado3" 
     android:layout_width="0dip" 
     android:layout_weight="1" 
     android:layout_height="wrap_content" 
     android:scaleType="fitCenter"/> 
     <ImageView android:id="@+id/image3" 
     android:src="@drawable/avocado3" 
     android:layout_width="0dip" 
     android:layout_weight="1" 
     android:layout_height="wrap_content" 
     android:scaleType="fitCenter"/> 
    </TableRow> 
... 
</TableLayout> 

Et voici la première ligne:

first row

Et la fin de la première ligne et le début de la seconde:

second row

Les images ImageViews sont définies sur un dessin qui est petit (@ drawable/avocado3), et dans onCreate() de l'activité, il récupère 9 images. F à partir d'Internet et appelle setImageBitmap().

Quelqu'un at-il des idées sur ce que je fais de mal?

Répondre

3

Par défaut, scaleType modifie uniquement la taille de l'image réelle, mais pas la taille de l'environnement ImageView. Puisque la hauteur du ImageView est wrap_content, il faudra tout l'espace dont il a besoin pour afficher l'image complète, puis redimensionner l'image pour l'adapter à l'intérieur de sa largeur. Essayez le adjustViewBounds à true. Si cela ne vous aide pas, essayez de régler un layout_height fixe ou de jouer avec la propriété maxHeight.

Il peut également être utile de jeter un coup d'œil à l'intérieur de la visionneuse de la hiérarchie: http://developer.android.com/guide/developing/tools/hierarchy-viewer.html.

+0

Sweet! adjustViewBounds l'a fait! Merci beaucoup. Je venais de faire un autre travail pour redimensionner les images avant d'appeler setImageBitmap(); le temps de sortir ce hack. – chad