1

爲什麼TableLayout和LinearLayout權重不一樣?或者我在佈局XML中有錯誤?TableLayout和LinearLayout的權重不一樣

4按鈕測試

我準備一個簡單的測試用具有權重1,1,1,3- 4個按鈕。使用TableLayout(一列)和LinearLayout(垂直)的結果不一樣。

在以下鏈接中,您可以看到TableLayout(左側)和LinearLayout(右側)實施的屏幕截圖。 http://i.stack.imgur.com/9dYlB.png

在我看來,LinearLayout是正確的 - 總和是6,所以重量爲3的第四個按鈕應占據一半的空間。

TableLayout XML

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 
    <TableRow 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" > 
     <Button 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:text="A" /> 
    </TableRow> 
    <TableRow 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" > 
     <Button 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:text="B" /> 
    </TableRow> 
    <TableRow 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" > 
     <Button 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:text="C" /> 
    </TableRow> 
    <TableRow 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="3" > 
     <Button 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:text="D" /> 
    </TableRow> 
</TableLayout> 

的LinearLayout XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 
    <Button 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:text="A" /> 
    <Button 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:text="B" /> 
    <Button 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:text="C" /> 
    <Button 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="3" 
     android:text="D" /> 
</LinearLayout> 

環境

ADT:22.6.2
AVD:英特爾凌動與4.2.2和4.4.2(兩者結果相同)

回答

0

看來,如果您將最終按鈕的權重值更改爲7,您將獲得與第二個xml文件相同的結果。我認爲這是因爲它通過將表格和按鈕歸入重量文件中,從而將文件中的額外重量值考慮在內。這是我用的:

編輯:更清楚的是,你有一個權重(總數)14這個編輯版本,最後一個按鈕有7,這是總數的一半。在按鈕式佈局中,您有不同的權重。

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 
<TableRow 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" > 
    <Button 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:text="A" /> 
</TableRow> 
<TableRow 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" > 
    <Button 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:text="B" /> 
</TableRow> 
<TableRow 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" > 
    <Button 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:text="C" /> 
</TableRow> 
<TableRow 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="7" > 
    <Button 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:text="D" /> 
</TableRow> 

+0

你說得對。所有的權重總和,TableRow和Button按鈕。無論如何,按鈕權重是多餘的,正如我測試過的。謝謝。 – bocekm

相關問題