안드로이드 레이아웃 알아보기

김태영·2024년 6월 21일
0

TIL

목록 보기
33/70
post-thumbnail

오늘 공부한 것

- 알고리즘 행렬의 곱셈 풀이
- 앱개발 입문 강의 복습
- 개인 과제 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을 써야만 했던 뷰 비율 조절도 간단히 가능
  • 뷰계층을 간단하게 할 수 있어 유지보수도 좋고 성능도 좋다.

마치며

아직 화면을 구성할 때 바로바로 이런 레이아웃을 써야 되겠다! 이런 생각이 나지 않아서 정리해놓은 걸 보고 선택하곤 한다. 앞으로 다양한 화면을 만들어보면서 여러 레이아웃의 사용에 익숙해져야겠다.

profile
화이팅

0개의 댓글