Estoy usando TableLayout en mi aplicación. Contiene cuatro TableRows que contienen cuatro ImageViews. El comportamiento que deseo es escalar el diseño para que se ajuste a la dimensión más corta.¿Cómo puedo obtener un TableLayout de Android para llenar el elemento primario en modo horizontal?
Funciona bien en modo retrato pero falla miserablemente en modo paisaje.
Desde el documentation parece que esto es porque TableRow layout_height siempre se establece en WRAP_CONTENT. Si bien puedo establecer las dimensiones de las Vistas individuales, TableLayout no se representará en absoluto si configuro View layout_height como FILL_PARENT.
Siento que hay algo simple que me falta. ¿Hay alguna manera de escalar el TableLayout con TableRows para que se ajuste a la altura en modo horizontal?
diseño 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);
}
}
}
¿No funciona un GridView para su caso de uso? Tutorial de GridView aquí: http://developer.android.com/guide/tutorials/views/hello-gridview.html –
GridView parece querer desplazar en lugar de cambiar el tamaño de las ImageView por el diseño del paisaje. Quizás si reduje los recursos de la imagen que podría funcionar. Esperaba evitar cambiar el tamaño de las imágenes. –