2010-05-30 59 views
7

我正在嘗試使用TableLayout構建計算器佈局,但最後兩行沒有與佈局的其餘部分對齊。我的佈局XML有什麼問題嗎?需要與Android TableLayout對齊方面的幫助

我想要做的事情會更容易在HTML中完成(<td>colspanrowspan),所以我應該嘗試將其轉換爲WebView?

代碼如下:(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

顯然'='按鈕佔用的空間比你想要的要多。嘗試調整'='按鈕的layout_weight參數。 「 – primpap 2010-05-30 13:47:20

+0

」但最後兩行沒有與佈局的其餘部分對齊「 - 我無法從這裏看到您的屏幕。你能發佈你所看到的截圖嗎?如果你有一個模型來展示你想要達到的目標,那就更好了。 – CommonsWare 2010-05-30 14:33:51

+0

primalpop,我改變了它的權重爲0,現在我有http://img683.imageshack.us/img683/2043/calculatorandroidlayout.png。有沒有辦法讓表格單元格覆蓋多行/列而不使用嵌套的LinearLayouts? CommonsWare,http://img185.imageshack.us/img185/2043/calculatorandroidlayout.png是原始版本,http://img683.imageshack.us/img683/2043/calculatorandroidlayout.png是當前版本。 – 2010-05-30 14:55:57

回答

5

你最終TableRow有三個單元(即直接孩子)。其餘的有四個。因此,除非您在某處放置android:layout_span屬性以指示哪個細胞吸收第四個細胞,否則它們不會對齊。

+2

我將包含0,1和2的「單元格」設置爲跨越兩個單元格,並將等號恢復爲重量1,並且它的工作原理類似於魅力!謝謝! – 2010-05-30 16:03:13