J'utilise un TableLayout dans mon application. Il contient quatre TableRows contenant chacun quatre ImageViews. Le comportement que je veux est de mettre à l'échelle la disposition pour s'adapter à la plus petite dimension.Comment puis-je obtenir une TableLayout Android pour remplir le parent en mode paysage?
Fonctionne très bien en mode portrait mais échoue lamentablement en mode paysage. À partir du documentation, il semble que cela soit dû au fait que TableRow layout_height est toujours défini sur WRAP_CONTENT.
Bien que je puisse définir les dimensions des vues individuelles, le TableLayout ne s'affichera pas du tout si j'ai défini View layout_height sur FILL_PARENT. Je sens qu'il y a quelque chose de simple qui me manque. Existe-t-il un moyen de mettre à l'échelle TableLayout avec TableRows pour s'adapter à la hauteur en mode paysage?
Mise en page XML:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/table"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:shrinkColumns="*">
</TableLayout>
Java:
public class Example extends Activity {
private TableLayout mTable;
private int[] mDrawableIds = { R.drawable.draw01, R.drawable.draw02, R.drawable.draw03, R.drawable.draw04, R.drawable.draw05, R.drawable.draw06, R.drawable.draw07, R.drawable.draw08, R.drawable.draw09, R.drawable.draw10, R.drawable.draw11, R.drawable.draw12, R.drawable.draw13, R.drawable.draw14, R.drawable.draw15, R.drawable.draw16 };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTable = (TableLayout)findViewById(R.id.table);
for (int j=0; j<4; j++) {
TableRow tr = new TableRow(this);
tr.setLayoutParams(new ViewGroup.LayoutParams( LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
for (int i=0; i<4; i++) {
ImageView iv = new ImageView(this);
iv.setImageResource(mDrawableIds[j*4+i]);
iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
iv.setAdjustViewBounds(true);
tr.addView(iv);
}
mTable.addView(tr);
}
}
}
Est-ce qu'un GridView ne fonctionne pas pour votre cas d'utilisation? Didacticiel GridView ici: http://developer.android.com/guide/tutorials/views/hello-gridview.html –
GridView semble vouloir faire défiler plutôt que de redimensionner les images en mode paysage. Peut-être que si je réduisais les ressources d'image, cela pourrait fonctionner. J'espérais éviter de redimensionner les images. –