안드로이드 스튜디오 리니어 레이아웃(LinearLayout)

2020. 5. 12. 03:20Android

 리니어 레이아웃은 뷰가 차지할 수 있는 사각형 영역을 할당한 후, 한 쪽 방향으로 차례대로 뷰를 추가하면서 화면을 구성하는 레이아웃입니다. 보통 가장 많이 사용하는 레이아웃입니다.

 

1. 방향 설정하기

리니어 레이아웃에서 orientation이라는 필수 속성이 있습니다. 레이아웃 내부의 뷰가 배치될 방향을 설정하는 속성입니다.

horizontal로 하면 가로 방향으로,

 

vertical로 설정하면 세로 방향으로 배치됩니다.

 

2. 뷰 정렬하기

LinearLayout에서는 뷰의 방향을 지정하여 정렬할 수 있습니다. 무게 중심을 주는 의미인데 gravitylayout_gravity라는 속성이 있습니다. gravity는 뷰 안의 내용물을 정렬하고, layout_gravity는 부모 컨테이너의 여유 공간에 뷰가 모두 채워지지 않아서 여유 공간이 생겼을 때 여유 공간 안에서 뷰를 정렬합니다.

 

gravity

LinearLayout의 gravity를 center로 줬습니다. 그러면 LinearLayout의 내용물인 두 개의 Button이 LinearLayout의 중앙으로 오게 되었습니다.

 

Button의 gravity를 right로 줬습니다. 이번엔 Button의 내용물인 "BUTTON"이라는 text가 오른쪽으로 정렬된 것을 확인할 수 있습니다.

 

layout_gravity

Button의 layout_gravity 속성을 right와 center로 주었더니 위와 같이 정렬된 것을 확인할 수 있습니다.

 

 

gravity와 layout_gravity의 차이를 아시겠나요??

center와 right 이외에도 top, bottom, left, center_vertical, center_horizontal, fill, fill_vertical, fill_horizontal, clip_vertical, clip_horizontal이 있습니다. fill은 여유 공간만큼 확대해서 채우고 clip은 남는 부분을 잘라내는 속성입니다.

 

3. 여유 공간 분할하기

여유 공간이 있을 때 layout_weight 속성을 통해 뷰의 공간을 분할할 수 있습니다.

 

LinearLayout의 방향을 horizontal로 했으면 가로방향으로 설정할 수 있습니다.

따라서 Button의 width를 0dp로 지정하고 layout_weight를 1로 주니 Button이 화면의 양쪽 크기만큼 늘어났습니다.

 

뷰가 하나일 때에는 weight의 의미가 없습니다. 하지만 버튼이 두개가 된다면 어떨까요

 

버튼의 가로 길이가 1:1만큼 분할되었습니다. 두 버튼 모두 weight 값이 1이기 때문입니다.

 

첫 번째 버튼의 layout_weight를 2로 주었습니다. 두 버튼의 가로길이가 화면의 2 : 1만큼 분할된 것을 확인할 수 있습니다.