안드로이드 2) Layout 클래스

밍나·2022년 1월 5일
0

Android

목록 보기
2/36

Concepts of Layout

1. View
image

  • 안드로이드에서 액티비티 화면에 출력되는 뷰의 최상위 뷰 클래스명이 View
  • View의 하위 클래스인 ViewGroup의 서브클래스로 만들어진 클래스들을 레이아웃 클래스라고 함
  • 레이아웃 클래스는 액티비티 화면에 출력은 되지만 자체 UI를 가지지 않음, 여러가지 뷰를 add 시켜서 한꺼번에 제어하기 위해 사용

2. Layout

  • Layout 클래스 : 뷰를 화면에 배치해주는 ViewGroup의 서브 클래스, 여러 개의 뷰를 자신에게 add시킬 수 있는 ViewGroup의 속성을 이어 받을뿐만 아니라 add된 뷰를 배치하는 방법을 정의할 수 있다
    • LinearLayout
    • RelativeLayout
    • FrameLayout
    • GridLayout
    • ConstraintLayout
  • 이 중에 어떤것을 써야 하냐? : 개발자가 편한대로, 동일한 화면을 다양한 Layout으로 구성할 수 있음(ex : LinearLayout으로 구성한 화면을 RelativeLayout으로도 구성할 수 있음)
  • Layout 중첩 : 하나의 화면을 여러 Layout 클래스를 중첩해서 작성할 수 있음

LinearLayout

1. LinearLayout

  • 레이아웃에 add된 뷰 객체를 순서대로 가로 혹은 세로 방향으로 나열하는 레이아웃

2. LinearLayout 속성

  • orientation : 방향 지정, vertical 혹은 horizontal
    ex) android:orientation="vertical"
  • layout_weight : 여백 자동 확장 속성, 여백이 생겼을 때 weight값의 비율에 따라 뷰들을 확장시킴
    ex) android:layout_weight="2"
  • gravity : 뷰 영역내에서 뷰의 컨텐츠를 정렬
  • layout_gravity : 뷰를 부모 영역내에서 정렬
    !!) 뷰를 layout_gravity 속성으로 부모 영역에서 세로 방향을 지정할 수는 없음, 이 때는 부모 영역에서 gravity 속성을 주도록 하자

RelativeLayout

1. RelativeLayout

  • 뷰의 상대위치로 정렬을 하는 레이아웃
  • 속성을 이용해 방향과 align을 지정
  • 속성을 지정하지 않으면 뷰 위에 뷰가 겹침

2. RelativeLayout 속성

  • android:layout_above : 기준이 되는 View의 윗부분에 배치
  • android:layout_below : 기준이 되는 View의 아래 부분에 배치
  • android:layout_toLeftOf : 기준이 되는 View의 왼쪽에 배치
  • android:layout_toRightOf : 기준이 되는 View의 오른쪽에 배치
  • 속성의 값으로는 뷰의 id값이 들어감
    ex) android:layout_toRightOf="@id/testImage" → 해당 뷰를 testImage라는 id값을 가진 뷰의 오른쪽에 위치해라
  • android:layout_alignTop : 기준 View와 윗부분을 정렬
  • android:layout_alignBottom : 기준 View와 아랫부분을 정렬
  • android:layout_alignLeft : 기준 View와 왼쪽을 정렬
  • android:layout_alignRight : 기준 View와 오른쪽을 정렬
  • android:layout_alignBaseline : 기준 View와 텍스트 기준선을 정렬
  • 속성의 값으로는 뷰의 id값이 들어감
    ex) android:layout_alignLeft="@id/testImage" → 해당 뷰의 왼쪽 변을 testImage라는 id값을 가진 뷰의 왼쪽변과 맞추어라
  • android:layout_alignParentTop : 부모의 윗부분에 View의 상단을 위치
  • android:layout_alignParentBottom : 부모의 아랫부분에 View의 하단을 위치
  • android:layout_alignParentLeft : 부모의 왼쪽에 View의 왼쪽을 위치
  • android:layout_alignParentRight : 부모의 오른쪽에 View의 오른쪽을 위치
  • android:layout_centerHorizontal : 부모의 가로방향 중앙에 View를 위치
  • android:layout_centerVertical : 부모의 세로방향 중앙에 View를 위치
  • android:layout_centerParent : 부모의 가로, 세로 중앙에 View를 위치
  • 속성의 값으로는 true가 들어감

FrameLayout

1. FrameLayout

  • 뷰를 겹쳐 출력시키는 레이아웃
  • add 시킨 순서대로 동일 위치에 뷰가 겹쳐서 출력
  • 사용 목적 : 동일 위치에 여러 뷰를 겹치게 출력한 후 한 순간에 하나의 뷰만 출력하기 위해 사용, visibility 속성을 이용해 출력될 뷰를 지정 → Tab 화면에서 주로 사용!
    image

GridLayout

1. GridLayout

  • Row, Column 구조의 테이블 화면을 만들기 위한 레이아웃
  • orientation 속성을 이용해 뷰의 배치 방향 지정
  • rowCount 혹은 columnCount 속성을 이용해 자동 개행 지정

2. GridLayout 속성

  • layout_row, layout_column : 뷰의 위치를 인덱스 값으로 지정
    ex) 버튼의 위치를 (1,1)에 위치
<Button android:text="3"
	android:layout_row="1"
    	android:layout_column:"1"/>
  • layout_columnSpan, layout_rowSpan : 특정 뷰가 차지하는 셀의 크기를 조정
<Button android:text="1"
	android:layout_rowSpan="2"
    	android:layout_columnSpan:"2"
        android:layout_gravity="fill"/>

ConstraintLayout

1. ConstraintLayout

  • androidx에서 제공하는 레이아웃
  • androidx : 구글에서 안드로이드 개발자를 위해 제공하는 라이브러리 → androidx의 라이브러리를 통합해서 JetPack의 요소라고 함
  • xml 코드에서 타이핑하는 레이아웃이 아닌 툴 베이스를 위한 레이아웃
profile
🤗🤗🤗

0개의 댓글