2010-05-30 10 views
7

Sto provando a creare un layout di calcolatrice utilizzando TableLayout, ma le ultime due righe non sono allineate con il resto del layout. C'è qualcosa di sbagliato nel mio layout XML?Hai bisogno di aiuto con Android TableLayout allineamento

Quello che sto cercando di fare sarebbe più facile da realizzare in HTML (<td> con colspan o rowspan), quindi dovrei provare la conversione di questo in una WebView?

codice è il seguente: (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

Ovviamente il pulsante '=' richiede più spazio di quanto previsto. Prova a regolare il parametro layout_weight del pulsante '='. – primpap

+0

"ma le ultime due righe non sono allineate con il resto del layout" - Non riesco a vedere lo schermo da qui. Puoi pubblicare uno screenshot di ciò che stai vedendo? Se hai un modello che mostra ciò che stai cercando di ottenere, tanto meglio. – CommonsWare

+0

primalpop, ho cambiato il suo peso a 0 e ora ho http://img683.imageshack.us/img683/2043/calculatorandroidlayout.png. C'è un modo in cui posso avere una cella di tabella che copre più righe/colonne senza usare LinearLayouts annidati? CommonsWare, http://img185.imageshack.us/img185/2043/calculatorandroidlayout.png era quello originale e http://img683.imageshack.us/img683/2043/calculatorandroidlayout.png è la versione corrente. –

risposta

5

I suoi ultimi TableRow ha tre celle (cioè, i bambini immediati). Il resto ha quattro. Quindi, non si allineeranno se non si inserisce un attributo android:layout_span da qualche parte per indicare quale cella sta assorbendo la quarta.

+2

Ho impostato la "cella" contenente 0, 1 e 2 per estendersi su due celle e riportare il segno uguale a peso 1, e funziona come un incantesimo! Grazie! –