뷰를 정렬하는데는 layout_gravity와 gravity, 이 두 속성이 사용됩니다.
layout_의 있고 없고 차이는 저번 시간에도 말씀 드렸을 텐데요,
이번에 실습을 통해 그 차이를 다시 한번 알아봅시다~
TextView에 layout_gravity를 center로 지정해봅시다.
TextView 자체가 가운데로 이동했습니다!
이번에는 gravity를 center로 지정해봅시다.
아무 변화가 없는 것 같죠?
한번 TextView의 width와 height를 match_parent로 설정해서 넓혀볼까요?
글자가 가운데로 이동했습니다!
그렇습니다.
layout_gravity는 자기 자신을 움직이는 속성이고, gravity는 자신의 내용물을 움직이는 속성입니다.
(레이아웃에 gravity 속성을 적용하면 글자 대신 레이아웃의 자식뷰가 이동합니다.)
이것으로 layout_의 있고 없고 차이, 잘 아시겠죠?
layout_gravity와 gravity는 center 말고도
center_horizontal (가로로만 가운데 정렬)
center_vertical (세로로만 가운데 정렬)
top (꼭대기로)
bottom (바닥으로)
start (왼쪽으로)
end (오른쪽으로)
등 다양한 정렬 옵션을 줄 수 있으며
end|bottom 같이 '|' 문자를 사용하여 두 가지 정렬 방식을 동시에 사용할 수도 있습니다.
'|'는 백스페이스 왼쪽에 있습니다.
'오른쪽으로|바닥으로'를 설정했으니 글자가 우하단으로 이동하게 됩니다.
- 2014년 12월 30일에 추가됨
미처 설명하지 못한 게 있어 추가합니다.
layout_ 접두어가 붙은 layout_gravity 속성은 부모 레이아웃의 영향을 받기 때문에 사용할 때 한 가지 주의할 점이 있습니다.
이렇게 리니어 레이아웃이 가로배치 상태일 때는 위, 가운데, 아래 같이 세로 방향으로 밖에 정렬하지 못합니다.
왼쪽에서 오른쪽으로 뷰가 쌓여나가는데 왼쪽, 가운데, 오른쪽으로 정렬할 수 있다면 많은 혼란이 생기겠죠?
세로배치 상태일 때도 같은 논리로 왼쪽, 가운데, 오른쪽 같이 가로 방향으로 밖에 정렬하지 못합니다.
뷰가 위에서 아래로 쌓여나가기 때문이죠~