Diseño de tabla XML? ¿Dos filas de la misma anchura con botones de igual anchura?

Aquí hay una parte de mi XML para el formato LAND:

<TableLayout android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" android:stretchColumns="*"> <TableRow> <Button android:id="@+id/countbutton" android:text="@string/plus1"/> <Button android:id="@+id/resetbutton" android:text="@string/reset" /> </TableRow> </TableLayout> 

Y ahora lo que no consigo – la anchura de una fila y también del botón depende del TEXTO dentro del botón. Si los dos textos son equaly largos permite decir: TEXTO su ok – la mitad de la mesa está en el centro de la pantalla. Pero si tienen un tamaño diferente, digamos "A" y "ESTE ES EL BOTÓN LARGO", el CENTRO de la tabla no está en el centro de la pantalla y los botones no son igualmente anchos …

4 Solutions collect form web for “Diseño de tabla XML? ¿Dos filas de la misma anchura con botones de igual anchura?”

Para tener botones en filas donde los botones son del mismo tamaño que necesita hacer.

  <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:layout_weight="1" android:layout_height="wrap_content" android:layout_width="0dip"/> <Button android:layout_weight="1" android:layout_height="wrap_content" android:layout_width="0dip"/> </LinearLayout> 

Y rellene las otras propiedades xml para sus botones.

La magia está en las propiedades de layout_weight y width. No necesita el diseño de la tabla. Estas propiedades le indican al diseño que sus vistas deben ocupar un espacio igual en el diseño padre.

Un buen ejemplo (originalmente de http://androidadvice.blogspot.com/2010/10/tablelayout-columns-equal-width.html )

Probado y funcionando:

 <TableRow> <!-- Column 1 --> <TextView android:id="@+id/tbl_txt1" android:layout_width="0dip" android:layout_height="wrap_content" android:background="@color/red" android:textColor="@color/white" android:padding="10dip" android:layout_margin="4dip" android:layout_weight="1" android:text="Column 1" /> <!-- Column 2 --> <TextView android:id="@+id/tbl_txt2" android:layout_width="0dip" android:layout_height="wrap_content" android:background="@color/red" android:textColor="@color/white" android:padding="10dip" android:layout_margin="4dip" android:layout_weight="1" android:text="Column 2" /> <!-- Column 3 --> <TextView android:id="@+id/tbl_txt3" android:layout_width="0dip" android:layout_height="wrap_content" android:background="@color/red" android:textColor="@color/white" android:padding="10dip" android:layout_margin="4dip" android:layout_weight="1" android:text="Column 3" /> </TableRow> 

Además de la respuesta aceptada:

Tuve un problema similar donde necesitaba varias imágenes en una cuadrícula con anchos de columna iguales, por lo que usé un diseño de tabla. Funcionó, pero como las imágenes cargadas asincrónicamente, las columnas correspondientes ocuparían el ancho completo hasta que todas las columnas tuvieran al menos una imagen en ellas.

Resolví esto usando la solución de Robby Pond, pero no funcionó para la última fila, que no necesariamente tenía tantas imágenes como las otras filas, estirando esas imágenes para ocupar todo el espacio disponible cuando quería que encajaran en el Mismas columnas que las anteriores. Para combatir esto, llené las columnas vacías restantes de esa fila con objetos regulares de la visión,

Utilizando los mismos parámetros de diseño que todas las demás imágenes:

width = 0, weight = 1. Y eso lo resolvió!

El fragmento de diseño

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

El código que programaticamente establece propiedades de diseño de botones en la tabla:

 public void addButtons(View view) { TableLayout tableLayout = (TableLayout) findViewById(R.id.tablelayout); Context context = getApplicationContext(); tableLayout.removeAllViews(); for (int rowIndex = 0; rowIndex < ROWS; rowIndex++) { TableRow row = new TableRow(context); for (int columnIndex = 0; columnIndex < COLUMNS; columnIndex++) { Button btn = new Button(context); LayoutParams buttonParams = new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f); btn.setLayoutParams(buttonParams); row.addView(btn); } tableLayout.addView(row); } } 
  • ¿Cómo agregar la imagen en un texto de TextView?
  • Crear vistas mediante programación mediante XML en Android
  • Cómo extraer archivos apk de la PC?
  • Cómo dibujar un círculo dentro de un círculo con formas de Android xml?
  • ¿Cómo puedo editar las dimensiones de un elemento de menú PopUp en Android?
  • Alinear el botón a la parte inferior de la pantalla
  • ¿Por qué no puedo definir atributos de android en el espacio de nombres predeterminado?
  • Cómo manejar clics de botón utilizando el XML onClick dentro de Fragmentos
  • Autocompletar no funciona en archivos XML en una jerarquía particular
  • Color Estado Lista no reconocida en forma Drawable
  • Error al inflar el fragmento de clase InflateException Archivo XML binario
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.