기타/Android

[Android Studio] 안드로이드 레이아웃 종류

yujindonut 2021. 11. 21. 01:27
728x90

사용자가 보는 화면은 Activity로 이루어져있다.

 

레이아웃은 뷰들을 배치하는데 도움을 준다!! 

 

1 ) Linear Layout

: 위젯들을 왼쪽 위부터 아래나 오른쪽으로 차례로 배치 

: orientation속성 ( vertical - 수직 / horizontal : 수평)

: 자식들이 충접되지 않고, 지정한 방향으로 쌓이는 (stacked) 형태로 표시된다.

<속성>

layout_gravity : 부모 컨테이너의 남은 영역 안에서 뷰를 정렬하는데 사용

gravity : 뷰 내부의 내용물 정렬하는데 사용

layout_weight : 공간분할 

여러개의 뷰를 특정한 비례에 맞춰 배치하고 싶을때

2) Relative Layout: 관계적 레이아웃

상대 위치에 하위 뷰를 표시하는 뷰 그룹

여러개의 중첩된 linear layout그룹을 relative layout으로 대체할 수 있다.

부모 컨테이너나 다른 뷰와의 상대적 위치를 이용해 화면에 배치하는 방식

 

 

3) Frame Layout

하나의 뷰만 보여주는 방법

주로 Fragment를 사용하는 경우에 많이 사용된다. 

가장 먼저 배치한 위젯이 작다면 안보일 수 있다. => 가장 마지막에 추가된 뷰가 가장 전면에 표시된다. 

뷰를 1->2->3 순으로 작성하면 실제로 화면에는 3->2->1 순서로 나타난다.

보통 visibility효과를 주어 화면 전환을 하는 것에 사용되는 것 같다.

 

4 ) Table Layout

격자(Grid) 모델자식 View 위젯들을 테이블(행과 열)로 나누어 표시하는 레이아웃layout_width 와 layout_height 속성을 사용하지 않는다. TableRow 속성을 사용해 row의 개수와 안의 view들의 개수로 column값이 정해진다!여기에 stretchColumn속성을 사용하면 여유공간이 생기지 않도록 뷰를 배치할 수 있다. 여기서는 총 3 * 2이므로 coulmn값을 여백없이 하고 싶다면 인덱스 0,1,2를 늘려주면 된다 --> android:stretchCoulmns="0, 1, 2"

5 ) Grid Layout

table layout의 진화버전 ? 자식 뷰들을 순서대로 배치한다는 점은 linear layout과 비슷

table과 마찬가지로 layout_width 와 layout_height속성을 따로 지정하지 않는다.

layout_columnSpan과 같은 속성으로 열병합도 가능하다.

 

6 ) Constraint Layout

가장 많이 사용되는 layout!

relativelayout보다 유연하고 android 스튜디오의 layout editor와 함께 사용하기 쉽다.

굉장히 많은 속성들을 갖고있다!(참조 : https://www.charlezz.com/?p=669) 

 

Constraint Layout – Part1. 만능 레이아웃 | 찰스의 안드로이드

ConstraintLayout ConstraintLayout은 ViewGroup을 상속받아 확장시킨 라이브러리 입니다. 지난 2017년 2월에 1.0 버전이 출시되어 많은 개발자들이 이 라이브러리를 유용하게 써왔습니다. 출시때는 Android API9

www.charlezz.com

가상 오브젝트

- Guideline

가로 또는 세로의 축을 가진 가상의 뷰 / 부모 뷰의 특정 위치를 기준점으로 삼을 때 사용한다.

- Barrier

예) 세로로 배치된 두개의 텍스트 뷰가 있을때, 오른쪽에 이미지 뷰를 넣으려고 한다. 상황에 따라 두개의 텍스트 뷰의 길이가 달라질 수 있는데 , 어떤 뷰를 기준으로 삼아야할지 모를때! Barrier를 사용한다.

constraint_referenced_ids : 어떤 뷰를 참조할지 설정

barrirerDirection: 참조하는 뷰의 어느 방향에 위치할지 설정

 

 

<추가속성정리 > 

padding : 뷰 내부의 내용물과 뷰의 테두리를 얼마나 띄울 것인지 지정

margin : 뷰의 테두리선 바깥쪽 공간을 얼마나 띄울 것인지 지정

 

 

 

728x90