Android

[Android] Table Layout

Hoplin 2022. 3. 26. 17:02
반응형

테이블 레이아웃은 표나 엑셀 시트와 같이 '테이블'형태로 화면을 구성하는 레이아웃이다. 테이블은 기본적으로 열과 행으로 이루어져있는데, 테이블 레이아웃 또한 열과 행으로 레이아웃을 구성한다. Table Layout은 기본적으로 TableRow라는 태그가 여러개 들어가 한 행을 구성한다.TableRow안에는 뷰들이 들어가고, 이 뷷르은 각각 하나의 열이 된다.그리고 TableRow마다 추가된 뷰의 개수가 열의 개수가 된다.

우선 LinearLayout안에 TableLayout을 넣어준다. TableLayout은 Palette의 Layouts에 있다. 하나의 특징을 더 살펴보면, TableLayout안에 TableRow가 디폴트로 4개 생성되는것을 볼 수 있다.

TableRow를 추가하면 기본적으로 layout_width,layout_height는 match_parent가 디폴트이다. 일반적으로 match_parent라고 한다면, 테이블 레이아웃의 아래쪽 여유 공간을 차지해야한다. 하지만 아래쪽 여유공간을 차지하지 않는다. 이유는 TableRow가 layout_height값을 내부적으로 wrap_content로 설정하기 때문이다. layout_width같은 경우에는 match_parent가 디폴트로 설정되어 , 가로공간을 꽉채운다.

 

한번 버튼을 두개의 TableRow에 3개씩 넣어보자.

그러면 위 사진과 같이 격자모양의 레이아웃이 생성되는것을 볼 수 있다. 기본적으로 TableLayout에서 사용할 수 있는 두가지의 속성이 있다.

 

TableLayout속성  : stretchColumns

이 속성은 가로 방향으로 여유공간이 있는경우, 모두 채워넣는 열을 설정할 수 있다. 기본적으로 값을 입력할때는 Index값을 ','를 이용해 구분하여 입력한다. 인덱스는 일반적인 배열과 동일하게 0부터 시작한다. 예를 들어서 첫번쨰, 두번째 버튼을 레이아웃의 크기를 늘려 가로 레이아웃을 꽉차게 표시하게 끔 하고 싶다고 가정하자. 그러면 stretchColumns값을 0,1로 지정해주면 된다.

그럼 아래와 같이 첫번째 두번째 버튼이 크기를 강제로 늘림으로서 가로의 여유공간이 없어지는것을 볼 수 있다.조금 더 응용해서 첫번째 column의 버튼만 늘리는 경우, 모두 늘리는 경우를 가정해 보고 설정해 보자

TableLayout속성 : shrinkColumns

shringColumns는 stretchColumns와 반대로, 특정 열을 부모 컨테이너 폭에 맞추도록 강제로 축소시키는 속성이다. 예를 들어서 첫번째 TableRow레이아웃의 첫번쨰 버튼의 Content가 되게 긴 문장이라고 가정하자.

그럼 위 사진처럼 레이아웃이 망가지는것을 볼 수 있다.shringColumns속성으로 특정 열을 지정해주면(stretchColumns와 지정 방법은 동일하다)강제로 부모 레이아웃에 맞추게 된다.

 

이번에는 반대로 각각 Column으로 추가하는 뷰의 속성들을 살펴보자

 

View의 속성 : layout_column

layout_column속성으로 칼럼의 인덱스를 지정할 수 있다.즉, 생성한 레이아웃이 어떤 인덱스애 위치할것인지를 지정하는 것이다

위 사진을 보면 TextView의 layout_columns값을 2로 지정해 주었다. 그랬더니 위와 같이 Index2번 자리에 위치한 곳으로 이동하는것을 볼 수 있다. 단 주의할 점은, 자신의 앞에 다른 레이아웃이 있다면, 자신의 앞에 있는 레이아웃 Index보다 작은 값의 Index Column으로는 이동할 수 없다. 위 예시에서 예를 들면, TextView는 앞에 Index1번 자리에 Button 뷰가 있으므로, 0번 인덱스로는 이동이 불가능하다는 것이다.

 

View의 속성 : layout_span

layout_span속성은 여러 칼럼에 걸쳐 있도록 만드릭 위한 속성이다. 지정 값은 숫자이다. 예를 들어 아래와 같이 layout_column값이 1인 TextView가 총 2개의 Column면적을 차지하고 싶다고 가정하자.

기본적으로 textView는 layout_column값이 0, 버튼은 layout_column값이 2인 상태이다. 여기서 TextView의 layout_span값을 2로 변경하면 총 2개 면적의 Column을 차지하게 되는것이다.

 

반응형