대표적인 뷰그룹

·2021년 10월 14일
1

안드로이드

목록 보기
3/17

LinearLayout과 LayoutParams

뷰그룹 자체의 속성(뷰그룹 생성할 때 설정)과 뷰그룹이 자식뷰를 배치하기 위해 자식뷰에게 요구하는 속성(자식 뷰를 생성할 때 설정) 두 가지가 있다.

orientation

자식 뷰들을 수직으로 배치할 것인지, 수평으로 배치할 것인지 결정

gravity

자식 뷰들의 배치 위치를 지정한다.

baselineAligned

텍스트가 포함된 자식 뷰 중 가장 높이가 긴 뷰를 기준으로 정렬할 것인지 설정
+) baseline Aligned와 baselineAlignedChildIndex
자식 뷰에 있는 baselineAlignedChildIndex의 값에 따라서 어느 뷰를 기준으로 맞출지 설정


layout_gravity

뷰 그룹 내에서의 자식 뷰의 배치위치를 결정

layout_weight

자식 뷰에 가중치를 지정해서 그 크기로 결정한다
이때 layout_width의 값을 0dp 또는 wrap_content로 설정해야 한다.
이 속성은 특정 자식뷰의 크기를 가변적으로 조절할 수 있기 때문에 다양한 화면 크기의 단말에서 유연하게 레이아웃을 유지할 수 있다.
+) layout_weight 속성과 LinearLayout의 measureWithLargestChild 속성
measureWithLargestChild가 true이면 레이아웃 내 layout_weight를 가지는 모든 자식 뷰를 가장 큰 자식 뷰의 크기로 조정됨
이때, layout_weight는 0이상의 임의의 값도 가능함

RelativeLayout과 LayoutParams

gravity와 ignoreGravity

gravity는 LinearLayout과 마찬가지로 배치위치를 결정한다.
이때 ignoreGravity에 지정된 뷰는 gravity 속성을 무력화 할 수 있다.

부모 뷰그룹과의 관계 배치 속성들

자식 뷰 간의 관계 배치 속성들

레이아웃의 유연성 속성

LinearLayout LayoutParams에 layout_weight 속성이 있다면
RelativeLayout LayoutParams에는 주변 뷰와의 관계 배치 속성을 통해 레이아웃 유연성을 지원하다.

FrameLayout과 LayoutParams

foreground

레이아웃 영역에 전경 이미지를 설정. 해당 이미지는 모든 자식 뷰보다 위에 놓여진다

foregroundGravity

전경 이미지의 중력 방향(배치위치)

measureALLChildren

visibility
invisible : view1이 보이지 않으나, FrameLayout 영역을 차지하고 있음
gone : view1이 보이지 않으며, FrameLayout 영역을 차지하지 않음

FrameLayout의 크기를 자식 뷰들의 배치에 좌우됨
이때 visibility 속성이 gone으로 설정된 자식뷰라 하더라도 모두 영역을 차지하도록 설정


Layout_gravity

자식 뷰의 중력방향을 설정한다.

TableLayout, TableRow와 LayoutParams

LinearLayout과 유사한 TableLayout, TableRow
상속 관계를 보면 TableLayout, tableRow는 LinearLayout을 상속받는다.

TableLayout의 기본 속성

LayoutParams는 없음

collapseColumns

자식 뷰 중 지정한 열 번호에 해당하는 뷰를 숨긴다.

shrinkColumns

열의 공간이 부족할 때 특정 열을 지정하여 공간을 줄이고 나머지 열의 공간을 확보함

stretchColumns

자식 열을 배치하고도 공간이 남을 때 특정 열이 늘어나서 공간을 채우게 됨


TableRow LayoutParams

기본 속성은 없음

layout_columns

자식 뷰가 배치될 열을 선택함. 자식 뷰를 1열로 설정하면 0번째 열을 비우고 1열부터 추가된다.

layout_span

일반적으로 하나의 뷰는 하나의 열을 차지하지만 이 속성을 통해 하나 이상의 열을 차지하게 함

profile

0개의 댓글