2014-01-08 3 views
1

그래서 첫 번째 행에는 2 열, 두 번째 행에는 4 열로 XML로 선언 된 TableLayout을가집니다.안드로이드 TableLayout 컬럼 스팬 변경

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

은 이제 동적 대신 두 전체 4 개 컬럼에 걸쳐 첫번째 행의 두 번째 열 열 결합을 (COL. B) 변경하려면, 제 1 열 (COL A는) 간 할 2 컬럼 상태로 다시 전환 할 수있는 기능을 제공합니다. 테이블 레이아웃의 제 2 상태 따라서이 될 것이다 : 처음

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

, A와 B 모두 XML로 생성되며, 로딩 후 조정하여이 마진이 추가 :

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

그러나 경우를 I는 그 두번째 컬럼의 폭을 변경하려고하고 처음 숨기고, 유일의 변화는 '아무튼 MATCH_PARENT 두 번째 열의 폭을 변경 왼쪽

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

에 슬라이딩 번째 열은 t 중 하나 도움이되지만 TableRow.LayoutParams에 대한 안드로이드 문서가 말한대로, 폭은 전혀 고려되지 않은 : 레이아웃 매개 변수의

이 세트는 각 아동의 폭이 MATCH_PARENT로 적용 및 높이 각 자식은 WRAP_CONTENT이어야하지만 높이가 지정되지 않은 경우에만 적용됩니다.

TableLayouts을 사용하여 수행하려는 작업을 수행 할 수있는 방법이 있습니까?

감사

답변

1

이제 알았어, 내가 전체 코드가 될 것이다 그래서, 4에 B의 범위를 설정하기 위해 추가로 0 범위의 설정하는 데 필요한 'A'열을 숨기고 때

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);