✨ 오늘 공부한 것
- 알고리즘 행렬의 곱셈 풀이
- 앱개발 입문 강의 복습
- 개인 과제 lv4 ~ lv5
레이아웃이란
ViewGroup의 파생 클래스로서, 포함된 View를 정렬하는 기능을 갖는다.
[ 종류 ]
- Linear Layout ⭐⭐⭐ → 때에 따라 많이 쓰이는 경우가 있으니 알아두자
- Relative Layout ⭐⭐⭐ → 때에 따라 많이 쓰이는 경우가 있으니 알아두자22
- Table Layout → 잘 쓰이지는 않음
- Frame Layout → 잘 쓰이지는 않음
- Constraint Layout ⭐⭐⭐⭐⭐ → 제일 많이 사용한다! 다른 레이아웃을 모두 구현할 수 있기 때문
오늘은 별표친 것들만 정리해보려고 한다.
✨ 틈새 지식
gravity
: 해당 위젯 내부의 것들을 어떻게 정렬할 지layout_gravity
: 부모 뷰를 기준으로 자기 자신을 어디에 정렬할 지
Linear Layout
컨테이너에 포함된 뷰들을 수평 또는 수직으로 일렬 배치하는 레이아웃이다.
💡 특징
- 자식으로 배치되는 뷰 위젯들은 오직 한 방향으로만 배치
- 위젯의 크기와 관계 없이 한 줄로만 배열
- 중첩되지 않음. 지정한 방향으로 쌓이는 형태
💡 주요 속성
orientation
vertical
: 자식들을 위에서 아래로 수직으로 배열horizontal
: 자식들을 왼쪽에서 오른쪽으로 수평 배열
LayoutWeight
- 자식들이 배치 될 때, 전체 영역 대비 비율의 개념으로 지정할 수 있는 weight(가중치)을 설정
Relative Layout
뷰를 서로 간의 위치 관계나 컨테이너와의 위치 관계를 지정하여 배치하는 레이아웃이다. 써본 적이 없는데, css의 relative와 absolute랑 비슷한 느낌인 것 같다.
💡 특징
- 자식 위젯들 간의 상대적 배치 관계에 따라 화면에 표시 될 위치가 결정되도록 한다.
- RelativeLayout 자체도 상대적 위치의 기준점으로 사용될 수 있다.
- 자식들에 상대적인 배치 기준을 지정하지 않는다면 레이아웃 내부에서 중첩되어 표시된다.
💡 주요 속성
[ 특정 뷰 기준 ]
layout_Above
: 기준 뷰의 위 쪽에 배치Below
(아래),toLeft
(왼쪽),toRight
(오른쪽)
layout_alignBaseline
: 기준 뷰와 baseline을 맞춤alignBottom
,alignTop
,alignLeft
,alignRight
[ 컨테이너 기준 ]
layout_centerVertical
: 컨테이너의 수직 방향 가운데 배치centerHorizontal
(수평 방향 가운데)
layout_alignParentLeft
: 컨테이너와 왼쪽을 맞춤alignParentRight
,alignParentBottom
,alignParentTop
Constraint Layout
제약 조건을 사용해 화면을 구성하는 레이아웃이다. 사용하기 쉽고, 다른 레이아웃이 할 수 있는 것들이 대부분 가능해서 많이 사용한다고 한다. 제약 조건은 최소한 3개를 주어야 에러가 나지 않는다.
💡 특징
- 복잡한 레이아웃을 단순한 계층구조를 이용해 표현 할 수 있는 ViewGroup이다.
- 형제 View들과의 관계를 정의해서 레이아웃을 구성한다는 점은 RelativeLayout과 비슷하지만 보다 유연하고 다양한 기능을 제공한다.
💡 장점
- RelativeLayout에선 불가능했던 자식 뷰간의 상호 관계 정의 가능
- LinearLayout을 써야만 했던 뷰 비율 조절도 간단히 가능
- 뷰계층을 간단하게 할 수 있어 유지보수도 좋고 성능도 좋다.
마치며
아직 화면을 구성할 때 바로바로 이런 레이아웃을 써야 되겠다! 이런 생각이 나지 않아서 정리해놓은 걸 보고 선택하곤 한다. 앞으로 다양한 화면을 만들어보면서 여러 레이아웃의 사용에 익숙해져야겠다.