*/Android

[안드로이드] ③ 주요 Layout

sssbin 2022. 9. 28. 03:05

 

 

1. LinearLayout

- 뷰를 수평 또는 수직 방향으로 배치

- 자식 뷰에 가중치를 부여할 수 있다. (정수로 표현된다.)

      ex) 선형 레이아웃의 자식 뷰들의 가중치가 각각 1, 2, 3

             → 남아있는 공간의 1/6, 2/6, 3/6 각각 할당

orientation "horizontal"은 수평으로, "vertical"은 수직으로 배치
gravity x축과 y축 상에 자식을 어떻게 배치할 것인지 지정
baselineAligned "false"로 설정되면 자식뷰들의 기준선을 정렬하지 않는다.

 

 

2. RelativeLayout

- 뷰의 상대적 위치 관계를 정의하여 배치

- 중첩된 레이아웃을 사용하지 않아도 되므로 레이아웃 계층 구조를 평평하게 유지하여 성능을 향상시킬 수 있다.

layout_above 현재 뷰의 하단을 기준 뷰의 위에 일치시킨다.
layout_below 현재 뷰의 상단을 기준 뷰의 하단에 위치시킨다.
layout_centerHorizontal 수평으로 현재 뷰의 중심을 부모와 일치시킨다.
layout_centerInParent 부모의 중심점에 현재 뷰를 위치시킨다.
layout_centerVertical 수직으로 현재 뷰의 중심을 부모와 일치시킨다.
layout_toLeftOf 현재 뷰의 우측단을 기준 뷰의 좌측단에 위치시킨다.
layout_toRightOf 현재 뷰의 좌측단을 기준 뷰의 우측단에 위치시킨다.

 

 

3. FrameLayout

- 여러 개의 뷰를 중첩으로 배치하고 그 중 하나를 레이아웃 전면에 표시

- 프레임레이아웃에 여러 개의 자식을 추가하면 기본적으로 가장 마지막에 추가된 뷰가 전면에 표시된다.

- layout_gravity 속성 값을 지정하여 정렬 기준 설정

출처 https://recipes4dev.tistory.com/127

 

 

4. TableLayout

- 뷰를 격자 형태로 배치

- 하나의 테이블은 여러 개의 TableRow 객체로 이루어지고

- 하나의 TableRow 안에는 여러 개의 cell들이 들어가고

- 하나의 cell 안에는 하나의 뷰 객체가 들어간다.

- 셀들의 경계선을 그리지 않는다.

- 만약 각 행마다 길이가 다르다면 가장 긴 행의 길이가 테이블의 폭이 된다.

- 분할된 row를 통합할 수 없다.

 

 

5. GridLayout

- 2차원 격자무늬 형태로 행과 열의 집합 형태로 구성

- 분할된 row를 통합할 수 있다.

orientation "horizontal"은 수평으로, "vertical"은 수직으로 배치
rowCount 행의 개수 지정
columnCount 열의 개수 지정
alignmentMode 자식 뷰(View)들을 정렬할 때 기준이 되는 뷰(View)의 여백을 포함하여 나머지 뷰(View)들을 정렬할지를 결정하는 속성

 

 

6. ConstraintLayout

**

https://developer.android.com/reference/android/support/constraint/ConstraintLayout#developer-guide

↑ 자세한건 요기 참고!

**

- 자식들을 부모나 다른 자식에 상대적으로 배치

- 뷰의 위치와 크기를 유연하게 조절

- 객체간에 제약조건을 설정함으로써 배치하는 것

1) Relative Positioning: 요소 간 상대 위치 지정

2) Margins: 요소 간 마진 설정

3) Centering Positioning: 뷰를 중앙에 배치

4) Circular Positioning: 대상 뷰를 기준으로 각도와 반지름으로 상대 위치 지정

5) Visibility Behavior: 뷰의 Visibility 상태에 따른 최종 위치 결정 및 여백

6) Dimension Constraints: 뷰에 적용된 제약에 따른 뷰의 크기 결정

7) Chains: 수평 또는 수직 방향으로 나열된 뷰들이 그룹처럼 동작할 수 있도록 한다.

8) Virtual Helpers objects: 가상 오브젝트의 사용을 통해 레이아웃 내 효율적인 뷰 배치

9) Optimizer: 최적화