2011-04-04 15 views
21

Estoy tratando de crear una vista de marcación de teléfono, usando un TableLayout para crear los 12 botones en una cuadrícula de 3x4. Me gustaría que las filas se extiendan verticalmente para agotar todo el espacio disponible por igual, pero parece que fill_parent no funciona en TableRows.Android TableRow se extiende verticalmente para llenar la pantalla

Me gustaría no tener que usar setMinimumHeight - ¿hay alguna manera de hacerlo correctamente en el diseño?

Muchas gracias,

Ed

Respuesta

57
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<TableLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:stretchColumns="*" 
    > 
    <TableRow 
     android:layout_weight="1" 
     android:gravity="center"> 
     <Button android:text="Button" android:layout_width="fill_parent" android:layout_height="fill_parent"/> 
     <Button android:text="Button" android:layout_width="fill_parent" android:layout_height="fill_parent"/> 
     <Button android:text="Button" android:layout_width="fill_parent" android:layout_height="fill_parent"/> 
    </TableRow> 
    <TableRow 
     android:layout_weight="1" 
     android:gravity="center"> 
     <Button android:text="Button" android:layout_width="fill_parent" android:layout_height="fill_parent"/> 
     <Button android:text="Button" android:layout_width="fill_parent" android:layout_height="fill_parent"/> 
     <Button android:text="Button" android:layout_width="fill_parent" android:layout_height="fill_parent"/> 
    </TableRow> 
    <TableRow 
     android:layout_weight="1" 
     android:gravity="center"> 
     <Button android:text="Button" android:layout_width="fill_parent" android:layout_height="fill_parent"/> 
     <Button android:text="Button" android:layout_width="fill_parent" android:layout_height="fill_parent"/> 
     <Button android:text="Button" android:layout_width="fill_parent" android:layout_height="fill_parent"/> 
    </TableRow> 
    <TableRow 
     android:layout_weight="1" 
     android:gravity="center"> 
     <Button android:text="Button" android:layout_width="fill_parent" android:layout_height="fill_parent"/> 
     <Button android:text="Button" android:layout_width="fill_parent" android:layout_height="fill_parent"/> 
     <Button android:text="Button" android:layout_width="fill_parent" android:layout_height="fill_parent"/> 
    </TableRow> 
</TableLayout> 
</LinearLayout> 

enter image description here

+0

que iba a publicar una solución con los botones en 2 Linearlayouts anidados, pero parece que su solución funciona bien también, y es también usando un TableLayout, como el OP preguntó. :) – Adinia

+0

Genial, pero ¿cómo hacerlo en código java? Intento obtener resultados similares con el número de filas y columnas conocidas solo en tiempo de ejecución, pero obtengo 'java.lang.ArithmeticException: divide por cero' en' android.widget.TableLayout.mutateColumnsWidth (TableLayout.java:579) '. Ni siquiera puedo creer que el sistema de diseño de Android esté realmente tan retrasado. –

+1

Vaya, lo he encontrado: http://stackoverflow.com/a/9683743/1418097 –

Cuestiones relacionadas