Everyday Growing Engineer 2023. 3. 2. 19:22

Android Layout 종류

  • LinearLayout
  • RelativeLayout
  • ConstraintLayout
  • TableLayout
  • GridLayout
  • FrameLayout
  • 기타 Layout

LinearLayout

LinearLayout은 세로나 세로로 들어가는 Layout으로 대표적으로 많이 사용하는 Layout입니다. 가로 세로는 orientation이 결정함.

  • vertical : 세로 방향
  • horizontal : 가로 방향

RelativeLayout

  • RelativeLayout은 부모(Parent) View 또는 자식(Child) View의 상대적 위치 관계를 정의하여 UI를 배치하는 Layout입니다.
  • 이때 기준이 되는 뷰를 지정하기 위해서는 기준뷰에 id값이 설정되어 있어야 합니다. 
  • ConstraintLayout을 사용하게 되면서 권장하지 않음.

Constraint Layout

  • Constraint Layout은 (1) RelativeLayout의 "상대적 위치 관계에 따른 배치" 특성 +  (2) LinearLayout의 "가중치(weight)가 가진 장점" + (3) chain 사용으로 다른 레이아웃 없이 "요소들을 그룹화"
  • 구글이 권장하는 Layout으로 처음 Activity를 만들면 기본값으로 세팅되어있습니다.
  • ConstraintLayout은 레이아웃에 배치되는 뷰들에 여러 제약을 적용하여 각 뷰의 위치와 크기를 결정한다.
  • 뷰 계층을 간단하게 구성하여 유지보수, 성능 향상
  • relative layout에서 4 depth이상 들어가야하는 것도 1 depth로 가능!!!
  • Relative 보다 더 유연한 위치속성 (위치를 정하는 속성이 훨씬 많음) 참고

TableLayout

  • 행(row)과 열(column)으로 구성되는 테이블 형태로 화면을 구성하는 레이아웃

GridLayout

  • GridLayout은 TableLayout의 좀 더 발전된 형태로 TableLayout과 LinearLayout이 합쳐진 Layout.
  • 2차원 격자 무늬 형태의 레이아웃으로 수직, 수평의 라인으로 구성되어 행과 열의 집합 형태로 만들어 지는 레이아웃
  • LinearLayout과 마찬가지로 orientation을 설정해 세로 배치 혹은 가로 배치를 설정해 줄 수 있습니다.
  • TableLayout은 분할된 column을 통합할 수 있지만 row는 통합이 불가능하다. 이를 가능하게하는 것이 GridLayout이다.

TableLayout과 GridLayout

  • 이 두 레이아웃의 경우, 모두가 행과 열을 사용하여 레이아웃을 분할하는 기능을 한다.
  • Table Layout에서는 Column이나 Row를 지정할 때 TableRow의 갯수에 따라 지정이 되었지만 GridLayout은 속성을 직접 지정해서 훨씬 직관적이다.
  • 동일한 UI의 경우 GridLayout은 일반적으로 TableLayout보다 빠르고 메모리가 적게 소요된다

FrameLayout

  • FrameLayout은 그 안에 포함되어 있는 자식뷰들을 차례대로 중첩시켜 나타내는 레이아웃을 말한다.
  • FrameLayout에 배치되는 view 는 모두 좌측 상단에 배치된다.
  • Margin 속성이나 layout_gravity 속성을 이용해 배치되는 위치를 결정하여 사용한다

TabLayout

  • TabLayout은 Tab을 선택하여 화면 전환을 할 수 있도록 만든 Layout입니다. 주 메뉴 안에서 보조 메뉴를 선택할 때 주로 사용합니다. 

DrawerLayout

  • DrawerLayout은 말 그대로 화면의 끝에서 가운데로 드래그하여 나타내는 보조 Layout입니다. 하지만 최신 안드로이드에서는 제스처 효과때문에 드래그 기능은 막고 특정 버튼을 통해 띄울 수 있도록 사용하기를 권장하고 있습니다.