¿Cuál es el equivalente de "colspan" en un Android TableLayout?

Estoy usando un TableLayout en Android. En este momento tengo un TableRow con dos elementos en él, y, debajo de eso, un TableRow con un elemento lo. Se hace así:

----------------------------- | Cell 1 | Cell 2 | ----------------------------- | Cell 3 | --------------- 

Lo que quiero hacer es hacer que Cell 3 se extienda a través de ambas células superiores, por lo que se ve así:

 ----------------------------- | Cell 1 | Cell 2 | ----------------------------- | Cell 3 | ----------------------------- 

En HTML usaría un COLSPAN …. ¿cómo puedo hacer que esto funcione en Android?

8 Solutions collect form web for “¿Cuál es el equivalente de "colspan" en un Android TableLayout?”

Parece que hay un atributo haciendo eso: layout_span

UPDATE: Este atributo debe aplicarse a los hijos de TableRow. NO al propio TableRow.

Para completar la respuesta, el atributo layout_span se debe agregar al niño, no a TableRow.

Este fragmento muestra la tercera fila de mi tableLayout, que se extiende por 2 columnas.

 <TableLayout> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_span="2" android:text="@string/create" /> </TableRow> </TableLayout> 

Y así es como lo hace programáticamente

 //theChild in this case is the child of TableRow TableRow.LayoutParams params = (TableRow.LayoutParams) theChild.getLayoutParams(); params.span = 2; //amount of columns you will span theChild.setLayoutParams(params); 

Tienes que usar layout_weight para llenar la fila entera de lo contrario todavía llena la columna izquierda o derecha del diseño de la tabla.

 <TableRow android:id="@+id/tableRow1" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_span="2" android:layout_weight="1" android:text="ClickMe" /> </TableRow> 

Tal vez esto ayudará a alguien. He intentado la solución con layout_span pero esto no funciona para mí. Así que resolví el problema con este truco. Simplemente use LinearLayout en lugar de TableRow donde necesita colspan, eso es todo.

Use android: layout_span en el elemento hijo del elemento TableRow

Creo que necesitas envolver un diseño alrededor de otro. Tenga una lista de Layout verticalmente, dentro tenga otra (o en este caso, dos) lista horizontalmente.

Todavía estoy encontrando difícil dividir la interfaz a 50-50 porción en Android.

He tenido algún problema con rowspan, en el caso de TableRow, Textview y así sucesivamente, generado con código. Incluso si la respuesta de Onimush parece ser buena, no funciona con la interfaz de usuario generada.

Aquí hay un pedazo de código que … no funcionan:

  TableRow the_ligne_unidade = new TableRow(this); the_ligne_unidade.setBackgroundColor(the_grey); TextView my_unidade = new TextView(this); my_unidade.setText(tsap_unidade_nom); my_unidade.setTextSize(20); my_unidade.setTypeface(null, Typeface.BOLD); my_unidade.setVisibility(View.VISIBLE); TableRow.LayoutParams the_param; the_param = (TableRow.LayoutParams)my_unidade.getLayoutParams(); the_param.span = 3; my_unidade.setLayoutParams(the_param); // Put the TextView in the TableRow the_ligne_unidade.addView(my_unidade); 

El código parece estar bien, pero al llegar al inicio de "the_params" devuelve NULL.

En el otro extremo, este código funciona como un encanto:

  TableRow the_ligne_unidade = new TableRow(this); the_ligne_unidade.setBackgroundColor(the_grey); TextView my_unidade = new TextView(this); my_unidade.setText(tsap_unidade_nom); my_unidade.setTextSize(20); my_unidade.setTypeface(null, Typeface.BOLD); my_unidade.setVisibility(View.VISIBLE); // Put the TextView in the TableRow the_ligne_unidade.addView(my_unidade); // And now, we change the SPAN TableRow.LayoutParams the_param; the_param = (TableRow.LayoutParams)my_unidade.getLayoutParams(); the_param.span = 3; my_unidade.setLayoutParams(the_param); 

La única diferencia es que empujo la Textview dentro de TableRow antes de configurar el span. Y en este caso, funciona. ¡Espero que esto ayude a alguien!

  • Edición de la anchura de TableLayout de Android
  • Android TableLayout con el ancho de la columna diferente en una fila
  • Cómo inflar vista desde XML en Android?
  • Cómo combinar fila en una celda en la disposición de la tabla en android, dinámicamente?
  • ¿Es posible especificar la altura de TableRow?
  • Cómo crear exactamente botones cuadrados que rellenan el ancho de la pantalla
  • Borde de elementos de la fila de tabla en android
  • Cómo dar frontera para tablerow en tablelayout en android?
  • Las filas añadidas dinámicamente en tablelayout no son visibles
  • Cómo mostrar la imagen en la fila de la tabla en función del tamaño
  • ¿Cómo funciona android: shrinkColumns y android: stretchColumns?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.