2011-04-26 3 views
1

J'ai le problème, que mes images ne sont pas réduites ~ correctement dans le Tablelayout que j'ai créé par programmation.Afficher correctement les images dans une TableLayout dans Android

This is what I'm currently getting.

et voici mon code:

final TableLayout grd_overview = (TableLayout)this.findViewById(R.id.tbl_overview); 
grd_overview.setShrinkAllColumns(true); 

Integer[] mThumbIds = { R.drawable.memory_1, R.drawable.memory_2, R.drawable.memory_1, R.drawable.memory_2, R.drawable.memory_1, R.drawable.memory_2, R.drawable.memory_2, R.drawable.memory_1, R.drawable.memory_2, R.drawable.memory_1,R.drawable.memory_2, R.drawable.memory_1, R.drawable.memory_1, R.drawable.memory_2, R.drawable.memory_1, R.drawable.memory_2, R.drawable.memory_1, R.drawable.memory_2, R.drawable.memory_2, R.drawable.memory_1, R.drawable.memory_2, R.drawable.memory_1, R.drawable.memory_2, R.drawable.memory_1, R.drawable.memory_1, R.drawable.memory_2, R.drawable.memory_1, R.drawable.memory_2, R.drawable.memory_1, R.drawable.memory_2, R.drawable.memory_2, R.drawable.memory_1, R.drawable.memory_2, R.drawable.memory_1, R.drawable.memory_2, R.drawable.memory_1}; 

int x = 0; 
for (int j = 0; j <= 5; j++) { 

    TableRow tr = new TableRow(this); 
    tr.setLayoutParams(new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 

     for (int i = 0; i <= 5; i++) { 
      ImageView iv = new ImageView(this); 
      iv.setImageResource(mThumbIds[x]); 
      tr.addView(iv); 
      x++; 
     } 
    grd_overview.addView(tr);    
} 

XML:

<TableLayout 
     android:id="@+id/tbl_overview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

J'ai aucune idée comment réduire les lignes que tous les ImageView de l'ajustement parfaitement. Les images sur la capture d'écran en bas sont juste plus petites qu'elles devraient être.

Répondre

0

Vous pouvez ajouter la ligne suivante de code après l'initialisation de chaque ImageView à l'intérieur du cycle de for:

iv.setScaleType(ScaleType.FIT_CENTER); 

Ou sélectionnez le type de mise à l'échelle qui convient le mieux à vos besoins.

Vous pouvez en savoir plus sur ScaleTypes here, et aussi sur scaling matrice algorithms, par exemple. que fait ce FIT_CENTER.

+0

merci :) FIT_CENTER ne fonctionnait pas bien, alors j'ai utilisé FIT_XY. Celui-ci vient juste de faire correspondre les images aux axes X et Y. Bien que (les images originales sont carrées) les nouvelles images ont été rectangulaires. Les images les plus basses occupent l'espace restant. Le nouveau problème est: Comment puis-je obtenir la hauteur de la Tableview aussi élevée que la largeur de l'affichage? – JustBasti

+0

rien à faire, je vais faire un nouveau fil, après avoir essayé de trouver celui-ci – JustBasti

+0

C'est ce que le 'FIT_XY' devrait faire (étirer le second rectangle pour qu'il corresponde au premier). D'un autre côté, vous pouvez obtenir la largeur de l'affichage en pixels en utilisant 'DisplayMetrics':' getBaseContext(). GetResources(). GetDisplayMetrics(). WidthPixels'. – rekaszeru

Questions connexes