2010-05-30 19 views
7

Estoy intentando construir un diseño de calculadora usando TableLayout, pero las dos últimas filas no se están alineando con el resto del diseño. ¿Hay algún problema con mi diseño XML?Necesito ayuda con la alineación de Android TableLayout

Lo que estoy tratando de hacer sería más fácil de lograr en HTML (<td> con colspan o rowspan), por lo que debo tratar de convertir esto en una vista web?

Código es el siguiente: (Screenshot)

<?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"> 
    <EditText 
     android:id="@+id/EditText01" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" /> 
    <TableLayout 
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent" 
     android:stretchColumns="*"> 
     <TableRow 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1"> 
      <Button 
       android:id="@+id/Button08" 
       android:textSize="16pt" 
       android:text="^" 
       android:layout_weight="1" 
       android:layout_height="fill_parent" 
       android:layout_width="wrap_content" /> 
      <Button 
       android:id="@+id/Button09" 
       android:text="÷" 
       android:textSize="16pt" 
       android:layout_height="fill_parent" 
       android:layout_weight="1" 
       android:layout_width="wrap_content" /> 
      <Button 
       android:id="@+id/Button10" 
       android:text="×" 
       android:textSize="16pt" 
       android:layout_height="fill_parent" 
       android:layout_weight="1" 
       android:layout_width="wrap_content" /> 
      <Button 
       android:id="@+id/Button11" 
       android:textSize="16pt" 
       android:text="-" 
       android:layout_weight="1" 
       android:layout_height="fill_parent" 
       android:layout_width="wrap_content" /> 
     </TableRow> 
     <TableRow 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="2"> 
      <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:orientation="vertical" 
       android:layout_weight="1"> 
       <Button 
        android:id="@+id/Button01" 
        android:text="7" 
        android:textSize="16pt" 
        android:layout_weight="1" 
        android:layout_height="wrap_content" 
        android:layout_width="fill_parent" /> 
       <Button 
        android:layout_height="wrap_content" 
        android:textSize="16pt" 
        android:text="4" 
        android:id="@+id/Button05" 
        android:layout_weight="1" 
        android:layout_width="fill_parent" /> 
      </LinearLayout> 
      <LinearLayout 
       android:layout_height="fill_parent" 
       android:orientation="vertical" 
       android:layout_weight="1" 
       android:layout_width="fill_parent"> 
       <Button 
        android:id="@+id/Button02" 
        android:layout_height="wrap_content" 
        android:text="8" 
        android:textSize="16pt" 
        android:layout_weight="1" 
        android:layout_width="fill_parent" /> 
       <Button 
        android:layout_height="wrap_content" 
        android:textSize="16pt" 
        android:text="5" 
        android:id="@+id/Button06" 
        android:layout_weight="1" 
        android:layout_width="fill_parent" /> 
      </LinearLayout> 
      <LinearLayout 
       android:layout_height="fill_parent" 
       android:orientation="vertical" 
       android:layout_weight="1" 
       android:layout_width="fill_parent"> 
       <Button 
        android:id="@+id/Button03" 
        android:text="9" 
        android:textSize="16pt" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" /> 
       <Button 
        android:textSize="16pt" 
        android:text="6" 
        android:id="@+id/Button07" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" /> 
      </LinearLayout> 
      <Button 
       android:id="@+id/Button04" 
       android:text="+" 
       android:textSize="16pt" 
       android:layout_height="fill_parent" 
       android:layout_width="fill_parent" 
       android:layout_weight="1" /> 
     </TableRow> 
     <TableRow 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="2"> 
      <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:orientation="vertical" 
       android:layout_weight="2"> 
       <LinearLayout 
        android:layout_weight="1" 
        android:orientation="horizontal" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"> 
        <Button 
         android:id="@+id/Button02" 
         android:textSize="16pt" 
         android:layout_weight="1" 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent" 
         android:text="1" /> 
        <Button 
         android:textSize="16pt" 
         android:id="@+id/Button06" 
         android:layout_weight="1" 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent" 
         android:text="2" /> 
       </LinearLayout> 
       <Button 
        android:id="@+id/Button01" 
        android:layout_height="wrap_content" 
        android:textSize="16pt" 
        android:layout_weight="1" 
        android:layout_width="fill_parent" 
        android:text="0" /> 
      </LinearLayout> 
      <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:orientation="vertical" 
       android:layout_weight="1"> 
       <Button 
        android:id="@+id/Button03" 
        android:textSize="16pt" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:text="3" /> 
       <Button 
        android:textSize="16pt" 
        android:id="@+id/Button07" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:text="." /> 
      </LinearLayout> 
      <Button 
       android:id="@+id/Button04" 
       android:textSize="16pt" 
       android:layout_height="fill_parent" 
       android:layout_width="fill_parent" 
       android:layout_weight="1" 
       android:text="=" /> 
     </TableRow> 
    </TableLayout> 
</LinearLayout> 
+0

Obviamente, el botón '=' ocupa más espacio de lo que usted deseaba. Intenta ajustar el parámetro layout_weight del botón '='. – primpap

+0

"pero las últimas dos filas no se alinean con el resto del diseño" - No puedo ver la pantalla desde aquí. ¿Puedes publicar una captura de pantalla de lo que estás viendo? Si tienes una maqueta que muestra lo que estás tratando de lograr, tanto mejor. – CommonsWare

+0

primalpop, cambié su peso a 0 y ahora tengo http://img683.imageshack.us/img683/2043/calculatorandroidlayout.png. ¿Hay alguna manera de que pueda tener una celda de tabla para cubrir varias filas/columnas sin utilizar LinearLayouts anidados? CommonsWare, http://img185.imageshack.us/img185/2043/calculatorandroidlayout.png fue el original y http://img683.imageshack.us/img683/2043/calculatorandroidlayout.png es la versión actual. –

Respuesta

5

Sus finales TableRow tiene tres células (es decir, los niños inmediatos). El resto tiene cuatro. Por lo tanto, no se alinearán a menos que coloque un atributo android:layout_span en alguna parte para indicar qué celda está absorbiendo la cuarta.

+2

Configuré la "celda" que contiene 0, 1 y 2 para que abarque dos celdas y vuelva a poner el signo igual en el peso 1, ¡y funciona como un amuleto! ¡Gracias! –

Cuestiones relacionadas