Hacer células de igual anchura y altura para llenar la tabla

Estoy tratando de aprender a usar diseños de tablas en android, este es mi código:

<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tableLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" > <!-- 3 columns --> <TableRow android:id="@+id/tableRow3" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="5dip" > <TextView android:id="@+id/textView2" android:text="Column 1" /> <Button android:id="@+id/button2" android:text="Column 2" /> <Button android:id="@+id/button3" android:text="Column 3" /> </TableRow> </TableLayout> 

Y este es el resultado:

introduzca la descripción de la imagen aquí

¿Cómo puedo hacer el TableRow para ajustar el ancho del TableLayout y la altura a la altura de TableLayout ? En palabras simples, me gustaría tener todas las columnas con el mismo ancho y filas con la misma altura llenar el TableLayout , ¿es posible? ¿Cómo?

Tienes que jugar con los valores de weight . El xml para dos filas parecería esto.

 <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tableLayout1" android:layout_width="match_parent" android:layout_height="match_parent" > <!-- 3 columns --> <TableRow android:id="@+id/tableRow3" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:padding="5dip" > <TextView android:id="@+id/textView2" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:text="Column 1" /> <Button android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:text="Column 2" /> <Button android:id="@+id/button3" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:text="Column 3" /> </TableRow> <TableRow android:id="@+id/tableRow3" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:padding="5dip" > <TextView android:id="@+id/textView2" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:text="Column 1" /> <Button android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:text="Column 2" /> <Button android:id="@+id/button3" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:text="Column 3" /> </TableRow> </TableLayout> 

Y este es el resultado.-

introduzca la descripción de la imagen aquí


Como una nota lateral, observe que fill_parent está obsoleto, debería usar match_parent en match_parent lugar.

La forma más rápida sería utilizar layout_weight con los objetos de la fila de la tabla. Aquí es cómo su xml debe mirar después de especificarlo.

 <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tableLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" > <!-- 3 columns --> <TableRow android:id="@+id/tableRow3" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="5dip" > <TextView android:id="@+id/textView2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Column 1" /> <Button android:id="@+id/button2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Column 2" /> <Button android:id="@+id/button3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Column 3" /> </TableRow> </TableLayout> 

Cuando se utiliza peso, se desea establecer la layout_width de diseño en 0dp para que pueda sobreescribir el valor real. Esta división le dará a cada vista un 1/3 del TableRow. Juega con el valor de peso hasta que tienes algo que te gusta.

agrega android:layout_weight="0.3" al interior del niño TableRow intenta reemplazar tu layout xml por este

espero esto lo que buscas

 <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tableLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" > <!-- 3 columns --> <TableRow android:id="@+id/tableRow3" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:padding="5dip" > <TextView android:id="@+id/textView2" android:layout_weight="0.3" android:text="Column 1" /> <Button android:id="@+id/button2" android:layout_weight="0.3" android:text="Column 2" /> <Button android:id="@+id/button3" android:layout_weight="0.3" android:text="Column 3" /> </TableRow> </TableLayout> 
  • Cómo llenar la pantalla con cuatro botones con el diseño de la tabla?
  • Cómo configurar la columna de tabla en android
  • Cómo agregar editText.addTextChangedListener en TableLayout
  • Rellene TableLayout con android: layout_weight de forma programática
  • Líneas de borde para celdas en GridLayout, TableLayout o GridView?
  • TableLayout con layout_width = matchparent que no coincide con el padre
  • ¿Cuál es el equivalente de "colspan" en un Android TableLayout?
  • Alineación de la disposición de la tabla de Android
  • Adaptador personalizado para la vista de lista
  • Cómo crear una paginación para el diseño de tabla dinámicamente creado con el conjunto visible?
  • Línea de encabezado de TableLayout de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.