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 …
- Crear componente personalizado basado en LinearLayout, declarando el diseño en XML
- Resaltar el elemento seleccionado en ListView en Android
- Android XML redondeado esquinas recortadas
- ¿Cómo representar una relación Many-To-Many en XML o en otro formato de archivo simple?
- No se puede arrastrar DrawerLayout desde ListView
- Bajo qué OS es Eclipse más robusto?
- ¿Por qué Android Studio siempre muestra ActionBar en el diseño de la aplicación, incluso cuando está deshabilitado?
- Gradle falla: nodo no soportado 'item' en ids.xml
- Android - El botón de radio no muestra su texto
- Cómo agregar un texto largo con muchos párrafos en string.xml en android
- Configuración del color del texto del botón con un estilo
- Aplicar diseño de material táctil ondulación a ImageButton?
- ¿Cómo activar el botón "Compartir" en la aplicación Android?
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); } }
- Desactivar la animación predeterminada de Retrato a Paisaje
- Cómo obtener ndk-gdb trabajando en Android?