안드로이드 UI 프로그램에서 화면 구성을 위한 뷰 클래스도 중요하지만, 해당 뷰들을 화면에 어떻게 배치할 것인가도 중요하다. 뷰를 적절하게 배치하는 데 사용하는 레이아웃 클래스를 살펴보자. 레이아웃 클래스는 화면에 출력되는 대상이지만, 자체 UI는 갖지 않는다. 레이아웃 클래스는 Button 같은 뷰들을 자신에게 포함(Add)하고 적절하게 배치해 화면에 한꺼번에 출력한다.
레이아웃 클래스마다 포함된 뷰의 정렬 규칙이 다른 것이지, 특정 화면을 특정 레이아웃으로만 구성할 수 있는 건 아니다. 화면을 작성할 때 무조건 특정 레이아웃을 사용해야 완성할 수 있는 경우도 있지만, 대부분 개발자의 선택에 따른다.
레이아웃 이란?
(명) 책이나 신문, 잡지 따위에서 글이나 그림을 효과적으로 정리하고 배치하는 일
⇒ 안드로이드 프로그래밍에서 레이아웃은 사용자에게 어떻게 보여줄 것인지, 어떻게 비춰질 것인지를 고려하여
UI를 만들고 위젯을 구성하고 배치하여, 좀 더 효율적으로 편리하게 쓸 수 있도록 해주는 것이다.
레이아웃 종류
- LinearLayout
- RelativeLayout
- FrameLayout
- TableLayout
- GridLayout
- ConstraintLayout
레이아웃에서 자주 사용되는 공통 속성
레이아웃의 모든 요소는 View 와 ViewGroup 객체의 계층구조를 사용해 빌드된다.
ViewGroup 객체는 일반적으로 레이아웃, View 객체는 위젯이라고 부른다.
orientation | 배치할 위젯의 방향 설정 (수직 / 수평) |
gravity | 위젯의 정렬 방향 설정 |
padding | 위젯의 여백 |
layout_weight | 레이아웃이 전체 화면에서 차지하는 공간의 가중 값 |
레이아웃 설명
◾ LineaerLayout
단일 열에 수평적으로 혹은 단일 행에 수직적으로 다른 뷰들을 정렬할 수 있는 레이아웃
해당 레이아웃을 이용할 때는 항상 orientation 속성을 통해 vertical / horizontal 을 결정해주어야 한다.
사용법이 간단하며, 매우 직관적인 코딩이 가능하다.
◾ RelativeLayout
뷰를 담고 있는 부모 레이아웃이나 그 안에 들어있는 다른 뷰들과의 상대적 위치를 이용해 화면을 배치하는 레이아웃
android:layout_above | 기준 뷰의 윗부분에 배치 |
android:layout_below | 기준 뷰의 아랫부분에 배치 |
android:layout_alignTop | 기준 뷰와 윗부분을 연결 |
android:layout_alignBaseline | 기준 뷰와 텍스트 기준선을 정렬 |
◾ FrameLayout
하나의 뷰만 화면에 표시해주는 레이아웃
레이아웃에 여러 뷰를 추가했다면 그 중 가장 나중에 추가한 뷰만 화면에 보이게 된다.
◾ TableLayout
자식 뷰들을 행과 열로 정렬하는 레이아웃
TableRow 객체들로 구성되어 있으며, 해당 객체가 추가될수록 행이 늘어난다.
분할된 column을 통합할 수 있지만, row는 통합이 불가능하다.
◾ GridLayout
2차원 격자무늬(Grid) 사각형 안에 자식 뷰들을 위치시키는 레이아웃
TableLayout의 단점을 보완한 레이아웃으로 분할된 column뿐만 아니라 row의 통합 또한 가능하다.
columnCount | 가로 방향일 때 한 줄에 몇 개의 뷰를 나열할 것인지 지정 |
rowCount | 세로 방향일 때 한 줄에 몇 개의 뷰를 나열할 것인지 지정 |
◾ ConstraintLayout
RelativeLayout의 상대적 위치 관계에 따른 배치 특성 + LinearLayout의 가중치 특성
제약조건인 연결선을 통해 그 안에 추가된 뷰들의 위치를 결정하는 레이아웃
이때 뷰의 위치를 결정할 수 있을 만큼의 연결선이 없으면 해당 뷰는 위치할 수 없게 된다.
위치와 크기를 유연하게 조절할 수 있기 때문에 다양한 해상도에 적용시킬 수 있다.
app: layout_constraintLeft_toRightOf | 상대적 위치 지정 |
android:layout_marginStart | 여백 설정 |
app: layout_constraintHorizontal_bias | 가운데 맞춤과 치우침 |
app: layout_constraintDimensionRatio | 비율 (ratio) |
© 참고
https://developer.android.com/guide/topics/ui/declaring-layout?hl=ko
'Android > study' 카테고리의 다른 글
[Android] 안드로이드 이벤트 (0) | 2021.09.07 |
---|---|
[Android] 인텐트의 정의와 종류 (+ 플래그) (0) | 2021.09.02 |
[Android] 매니페스트 파일 (AndroidManifest.xml) 분석 (0) | 2021.09.02 |
[Android] 안드로이드 액티비티 생명주기와 상태 (+ 호출 예제) (0) | 2021.08.08 |
[Android] 안드로이드의 특징과 4대 컴포넌트 (2) | 2021.08.05 |