2014-01-08 108 views
1

因此,我有一個TableLayout在XML中聲明,第一行中有2列,第二行中有4列。更改Android TableLayout列範圍

--------- --------- 
|   |   | 
| A | B | 
|   |   | 
--------- --------- 
| | | | | 
| | | | | 
--------- --------- 

現在我想要動態地改變所述第二列的列跨度(山口。B)在第一行中以跨越而不是兩個整個4列,並且所述第一柱(柱A)至消失,並能切換回兩列狀態。該表格的佈局的第二狀態從而將是這樣:

------------------- 
|     | 
|   B   | 
|     | 
--------- --------- 
| | | | | 
| | | | | 
--------- --------- 

最初,A和B兩者的以XML的創建,和加載後調整尺寸並具有餘量加入:

TableRow.LayoutParams bLp = new TableRow.LayoutParams(size, size); 
bLp.setMargins(margin, 0, 0, margin); 
bLp.span = 2; 
b.setLayoutParams(bLp); 

但是,如果我試圖更改第二列的跨度和隱藏的第一個,唯一變化的是第二列向左滑動

a.setVisibility(View.GONE); 
TableRow.LayoutParams bLp = (TableRow.LayoutParams) b.getLayoutParams(); 
bLp.span = 4; 
b.setLayoutParams(bLp); 

更改第二列的寬度,以MATCH_PARENT沒有按」牛逼於事無補,但作爲TableRow.LayoutParams Android的醫生說,寬度不考慮在所有:

這組佈局參數強制每個孩子的寬度是MATCH_PARENT和高度每個孩子都是WRAP_CONTENT,但只限於未指定高度。

有沒有辦法實現我想用TableLayouts做什麼?

由於

回答

1

現在知道了,隱藏「A」列我需要設置它的跨度爲0附加到B的跨度設置爲4,因此整個代碼將是當:

TableRow.LayoutParams aLp = (TableRow.LayoutParams) a.getLayoutParams(); 
aLp.span = 0; 
a.setLayoutParams(aLp);  

a.setVisibility(View.GONE);  

TableRow.LayoutParams bLp = (TableRow.LayoutParams) b.getLayoutParams(); 
bLp.span = 4; 
b.setLayoutParams(bLp);