Comment puis-je obtenir un Android TableLayout pour remplir le parent en mode paysage?

Je suis à l'aide d'un TableLayout dans mon application. Il contient quatre TableRows contenant chacun quatre ImageViews. Le comportement que je veux c'est à l'échelle de la mise en page pour l'adapter à la dimension la plus courte.

Il fonctionne très bien en mode portrait, mais échoue lamentablement en mode paysage.

De la la documentation il semble que ce est parce que le TableRow layout_height est toujours WRAP_CONTENT. Bien que je ne peux définir les dimensions de chacun des points de Vue, la TableLayout ne sont pas rendues à tous si j'ai mis la Vue layout_height à FILL_PARENT.

Je se sentir comme il ya quelque chose de simple, je suis absent. Est-il possible d'obtenir le TableLayout avec TableRows à l'échelle pour s'adapter à la hauteur en mode paysage?

XML Mise en page:

<?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);
}
}
}
Un GridView fonctionne pas pour votre cas d'utilisation? GridView tutoriel ici: developer.android.com/guide/tutorials/views/hello-gridview.html
GridView semble vouloir faire défiler plutôt que de redimensionner la ImageViews pour le plan paysager. Peut-être que si j'ai fait l'image des ressources les plus petites qui pourraient travailler. J'espérais éviter le redimensionnement des images.

OriginalL'auteur Brian Cooley | 2009-12-27