테이블 레이아웃(TableLayout)은 화면의 좌측 상단부터 시작하여 테이블(행row와 열Column)형태로 개별 셀과 연결하여 뷰를 배치한다. 즉 격자 형태로 뷰들을 나영하게 된다. 테이블레이아웃의 시작은 자바의 배열과 같이 0 부터 시작한다. 테이블 레이아웃은 선형 레이아웃을 상속받아 android.widget.TableLayout 클래스와 android.widget.TableLayout.LayoutParams 클래스로 제공한다.
- 테이블 레이아웃의 특징
1) 행과 열의 격자를 사용하여 뷰를 배치한다.
2) 테이블 레이아웃은 행, 열 또는 셀에 대한 경계선을 표시하지 않는다.
3) 행이나 열에 대해 병합하는 기능을 제공하지 않는다.
4) 테이블 내 전체 열의 개수는 열수가 가장 많은 행을 따른다.
5) 테이블 레이아웃의 layout_width는 항상 match_parent인 반면에 layout_height는 wrap_content으로 설정 된다.
테이블 레이아웃에서 사용하는 뷰는 일반적으로 전용 TableRow 요소를 사용한다. 물론 일반 뷰나 위젯들을 삽입할 수 있는데, 그때는 다음과 같은 제한이 따른다.
- 테이블 레이아웃은 방향이 vertical로 지정된 LinearLayout 처럼 작동한다.
- layout_width 속성이 무조건 match_parent으로 고정된다.
- 테이블 배치속성
1) layout_column="배치하려는 열번호"
요소를 배치하고자 하는 열 위치를 지정한다.
2) shrinkColumns="줄이고자 하는 열 번호 또는 *"
TableRow 요소의 수가 많아 테이블 레이아웃에서 제공할 수 있는 너비를 넘는다면, 지정한 열의 너비를 줄여서 화면상에 전체 열들을 보이고자 할 때 사용한다. 역으로 레이아웃의 너비가 충분하여 열들의 너비를 줄일 필요가 없다면 줄어들지 않게 된다.
테이블 레이아웃에서 제공 가능한 열들에 적용이 가능하다. 복수의 열은 쉼표(,)로 구분하며 전체 열을 줄이고자 한다면 * 을 사용한다.
칼럼의 너비가 줄어들면서 표현하는 콘텐츠(예를 들어 문자열이나 이미지)의 너비가 뷰의 너비보다 커서 하나의 라인에 정상적으로 표한할 수 없다면 자동으로 줄 바꿈이 일어난다.
자바 코드에서는 setColumnShrinkable() 메서드 또는 setShrinkAllcolumns() 메서드를 사용한다.
3) collapseColumns="숨기고자 하는 열번 호 또는 *"
특정 화면에서 숙기고자 할 경우 사용된다. 1~n 개의 열에 적용된다. 복수의 열을 숨기고자 한다면 쉼표(,)로 열들을 구분한다. 만약 전체 열을 숨기려면 아스테리크(*)를 사용한다. 자바 코드에서는 setColumncollapsed()메서드와 동일하다.
4) layout_span="차지하려는 열 수"
지정한 열이 뒤에 나오는 다른 열을 포함하고자 할 때 사용한다.
5) stretchColumns="늘리려는 열 번호 또는 *"
필요에 따라 특정 뷰가 속한 열의 너비를 인위적으로 늘릴 필요가 있다. 나머지 열들이 차지하고 남는 여유 공간을 지정된 열들이 차지하게 된다. 자바코드에서는 TableLayout 클래스의 setColumnStretchable() 이나 setStretchAllColumns()메서드를 이용한다.
[Android]ScrollView(스크롤 뷰) (0) | 2013.02.11 |
---|---|
[Android]FrameLayout(프레임레이아웃) (0) | 2013.02.11 |
[Android]TextView 요소 (0) | 2012.12.30 |
[Android]XML과 자바 (0) | 2012.11.09 |
[Android] 위치와 배열 속성 (0) | 2012.10.08 |
댓글 영역