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 속성 값을 지정하여 정렬 기준 설정
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: 최적화
'* > Android' 카테고리의 다른 글
[안드로이드] Cannot Resolve Symbol 'R' 해결 (0) | 2022.10.20 |
---|---|
[안드로이드] ec2 서버와 통신 (2) | 2022.10.18 |
[안드로이드] ② Palette (0) | 2022.09.28 |
[안드로이드] ① Manifest / 4대 컴포넌트 / Intent (0) | 2022.09.27 |
[안드로이드] Jsoup 사용해서 웹 크롤링 (0) | 2021.10.02 |