레이아웃이란?

ViewGroup의 파생 클래스로서, 포함 된 View를 정렬하는 기능

 

레이아웃의 종류

01. Linear Layout (*Orientation -> vertical or horizontal)

  • 컨테이너에 포함 된 뷰들을 수평 또는 수직으로 일렬 배치하는 레이아웃
  • 자식 뷰를 수평,수직으로 일렬 배치하는 레이아웃으로, 가장 단순하고 직관적이며 사용빈도가 높다.
  • LinearLayout의 자식(Children)으로 배치되는 View위젯들은 오직 한 방향 (가로 또는세로)으로만 배치
  • 위젯의 크기(높이 또는 너비)와 관계없이 한 줄로만 배열
  • 아래 그림과 같이 가로 방향으로 배치 될 때는 가로로 한 줄(onlyonerow)
  • 세로 방향으로 배치될 때는 세로로 한 줄(onlyonecolumn)로 표시
  • LinearLayout의 자식들은 중첩(overrap)되지 않고,지정한 방향으로 쌓이는(stacked)형태로 표시
  • LinearLayout은 자식(Children)들이 배치 될 때,전체 영역 대비 비율의개념으로지정할수있는Weight(가중치)를 설정
  • 예) 전체 크기를 10으로 본다면, 첫 번째 View위젯은 3, 두 번째View위젯은7의영역을차지하도록 만듦

02. Relative Layout

  • 뷰를 서로 간의 위치 관계나 컨테이너와의 위치 관계를 지정하여 배치하는 레이아웃
  • RelativeLayout은 자식(Children)View위젯들이 서로 간의 상대적 배치 관계에 따라 화면에 표시 될 위치가 결정되도록 만들어주는Layout클래스
  • 예)"A를 화면에 표시하고 B는A의 오른쪽에 표시”,"C를 첫번째 자식으로 두고 D가 C아래에 위치하도록 배치”
  • View위젯들을 포함하는 Relative Layout(View위젯 입장에서는 부모(Parent))자체가 상대적 위치의 기준점으로 사용될수도있습니다.
  • 만약 RelativeLayout의 자식(Children)들에 "상대적인"배치 기준을 지정하지 않는다면, RelativeLayout내부에서 중첩되어 표시된다

03. Table Layout

  • 표 형식으로 차일드를 배치하는 레이아웃
  • 자식(Children) View위젯들을 테이블(행과 열로 구성)로 나누어 표시하는 Layout클래스

  • stretchColumns : 늘릴 열을 지정(인텍스는 0부터 시작 됨)

TableRow

  • 정해진 규칙에 따라 크기가 결정되므로, layout_width/height를 지정할 필요가 없다.

04. Frame Layout

  • 컨테이너에 포함된 뷰들을 전부 좌상단에 배치하는 레이아웃
  • 하나의 자식 View위젯만 표시 할 때 사용하는 Layout클래스
  • FrameLayout에 여러 View위젯을 자식으로 추가하면 겹쳐진 형태로 표시되며,가장 최근에 추가된 View위젯이 가장 상위(ontop)에 표시

  • 모든 자식 View는 좌상단에 배치되며,여러 개의 자식View를 포함하는 경우나 열된순서대로 겹쳐져서 표시 됨

05. Constraint Layout

  • 제약 조건을 사용해 화면을 구성하는 방법
  • 복잡한 레이아웃을 단순한 계층구조를 이용해 표현 할 수 있는 ViewGroup
  • 형제 View들과의 관계를 정의해서 레이아웃을 구성한다는 점은 RelativeLayout과 비슷하지만 보다 유연하고 다양한 기능을 제공함
  • RelativeLayout에선 불가능했던 자식 뷰간의 상호 관계 정의 가능
  • ex)두개의 View를 위아래로 붙여서 컨테이너 중앙에 배치하기
  • LinearLayout을 써야만 했던 뷰비율 조절도 간단히 가능
  • 뷰계층을 간단하게 할 수 있어 유지보수도 좋고 성능도 좋고!

'Android Studio' 카테고리의 다른 글

Android Studio 폰트 설정 및 적용 방법  (0) 2023.12.13
Android Studio Activity Lifecycle  (0) 2023.12.13
Android Studio UI - View  (0) 2023.12.11
Android Studio Bookmarks 활용  (0) 2023.12.11
안드로이드가 뭐야?  (0) 2023.12.11

+ Recent posts