728x90

레이아웃이란?

 

뷰그룹 중에서 자주 사용하는 뷰의 배치 방식을 정의한것.

 

 

레이아웃의 대표적인 속성

 

속성 설명
채우기 : fill model 여유공간에 어떻게 채울것인지 설정
방향 : orientation 뷰를 추가할 방향을 설정
정렬방향 : gravity 뷰의 정렬 방향을 설정
여유공간 : padding 뷰의 여유 공간을 설정
공간가중치 : weight 뷰가 차지하는 공간의 가중치 값을 설정

 

 

안드로이드에서 제공하는 대표적인 레이아웃의 종류

레이아웃 이름 설명

제약 레이아웃

(ConstraintLayout)

제약조건(Constraint) 기반 모델

제약 조건을 사용해 화면을 구성, 안드로이드 스튜디오의 디폴트 레이아웃

리니어 레이아웃

(LinearLayout)

박스(Box) 모델

사격형의 영역을 각각의 뷰마다 지정하여 할당

한 쪽 방향으로 차례대로 뷰를 추가하여 화면 구성

상대 레이아웃

(RelativeLayout)

규칙(Rule) 기반 모델

부모 컨테이너, 다른 뷰와의 상대적 위치로 화면 구성

프레임 레이아웃

(FrameLayout)

싱글(Single) 모델

가장 상위의 뷰, 뷰그룹을 보여주는 방법

여러 개의 뷰를 중첩 후 각 뷰를 전환하여 보여주는 방식으로 주로 이용

테이블 레이아웃

(TableLayout)

격자(Grid)모델

격자 모양의 배열을 사용하여 화면을 구성, HTML에서 사용하는 정렬 방식과 유사

 

이 중에서 가장 많이 쓰이고 간단한 레이아웃은 리니어 레이아웃입니다.

 

 

 

방향 설정하기

세로방향 android:orientation="vertical"
가로방향 android:orientation="horizontal"

 

 

정렬 방향 정하기 

정렬 속성 설명
layout_gravity

부모 컨테이너의 여유 공간에 뷰가 모두 채워지지 않아 여유 공간 안에서 뷰를 원하는 곳에 정렬할 수 있음

- layout_width나 layout_height 속성을 wrap_content로 할 경우 같이 사용할 수 있음

gravity 뷰에서 화면에 표시하는 내용물을 정렬할 때

 gravity 속성으로 지정할 수 있는 값

정렬 속성값 설명
top 위쪽 끝에 배치
bottom 아래쪽 끝에 배치
left 왼쪽 끝에 배치
right 오른쪽 끝에 배치
center_vertical 세로방향의 중앙에 배치
center_horizontal 가로뱡향의 중앙에 배치
fill_vertical 세로방향으로 여유 공간만큼 채워서 배치
fill_horizontal 가로방향으로 여유 공간만큼 채워서 배치
center 세로*가로 방향의 중앙에 배치
filll 세로*가로 방향의 여유 공간만큼 채워서 배치
clip_vertical

상하 길이가 여유공간보다 클 경우 잘라서 배치

topclip_vertical : 아래쪽에 남는 부분 잘라내기

bottonclip_vertical : 위쪽에 남는 부분 잘라내기

center_verticalclip_vertical : 위쪽과 아래쪽에 남는 부분 잘라내기

clip_horizontal

좌우 길이가 여유공간보다 클 경우 잘라서 배치

rightclip_horizontal : 왼쪽에 남는 부분 잘라내기

leftclip_horizontal : 오른쪽에 남는 부분 잘라내기

center_horizontalclip_horizontal : 왼쪽과 오른쪽에 남는 부분 잘라내기

  •  텍스트뷰를 이용시 옆의 텍스트 뷰나 버튼에 들어있는 텍스트와 높이가 맞지 않는 경우 basedlineAligned 속성 사용 가능. ( 텍스트의 정렬이 우선시 되므로 어떤 정렬을 우선 적용할 것인가에 따라 선택적으로 지정해야함 )

 

여유 공간 설정하기

layout_margin 부모 컨테이너의 여유 공간과 뷰 사이의 여백을 주는 방법
padding 뷰 안의 내용물인 텍스트나 이미지와 뷰 안의 영역 사이의 여백을 주는 방법

 

 

공간가중치 설정하기

layout_width

부모 컨테이너의 여유 공간을 여러 개의 뷰들에게 분할해줌

ex) 두 개의 뷰에 각각 '1'의 값을 지정하면 반으로 분할, '1'과 '2'로 지정 시 각각 1/3과 2/3으로 분할하여 할당.

 

 

 

 

 

 

[참고] Do it! 안드로이드 앱 프로그래밍

+ Recent posts