"LinearLayout"에서 가장 좋은 점은 무엇일까요?
안드로이드 개발하실때 가장 고민되는 부분이 바로 단말기별로 가지각색인 해상도 문제 일 것입니다. 이러한 문제를 바로 "LinearLayout"으로 해결 할 수 있습니다. 바로 "layout_weight" 라는 속성을 활용하면 되는데요. 이 "layout_weight" 라는 속성은 바로 가중치를 주는 것입니다. 다시 말씀드리면 부모 레이아웃의 남은 영역을 일정한 비율로 결정한다는 의미 입니다. 1. "layout_weight" 사용하기 사실 이 "layout_weight" 속성은 "LinearLayout" 속성에 지정하는 것이 아니라, 내부에 배치 되어 있는 뷰들의 속성으로 설정하셔야 합니다. 즉, 모든 뷰들이 이 속성을 사용할 수 있죠. 하지만 이 속성은 "LinearLayout"에서 밖에 사용할 수 없습니다. 이 가중치라는 개념은 "LinearLayout"에서 밖에 적용되기 때문입니다. 자 그럼 이러한 점을 확인하고 예제코드를 보시겠습니다. ![]() 위 소스는 "LinearLayout"에 각기 다른 색을 가지고 있는 3개의 뷰를 배치해 두었습니다. 여기서 보셔야 할점은 빨간 네모부분인데요. 이부분이 바로 "layout_weight" 속성으로 가중치를 부가하는 모습입니다. 각각 1, 5, 3 의 가중치를 주고 있는 모습입니다. 이 말인 즉, 부모뷰의 세로 영역을 1:5:3 비율로 나눠서 배치 된다는 의미입니다. 그런데 왜 "세로 영역"만일까요? 그건 바로 부모 "LinearLayout"의 "orientation" 속성이 세로이기 때문이죠. 그래서 뷰들이 세로 배치되기 때문에 가중치는 세로 가중치만 줄 수 있습니다. [여기서 잠깐] - 각 배치된 뷰들의 세로 길이는 "0dp"로 준 것은 가중치 때문에 의미가 없어졌기 때문입니다. ![]() 자 3개의 뷰가 이떻게 나눴는지 한눈에 보여주는 결과 화면입니다. 3개의 뷰가 각각 1:5:3 으로 나눠져 있음을 알 수 있습니다. 이번엔 세로가 아닌 가로 "LinearLayout"의 가중치를 주어 보겠습니다. ![]() 빨간색 네모를 보시면 "horizontal" 속성을 줌으로써 가로 레이아웃을 설정하였습니다. 그리고 파란색 네모를 보시면 각각의 뷰에 가중치를 주었습니다. 그럼 결과를 확인해 보겠습니다. ![]() 보시다 시피, 가로 비율 1:5:3으로 정확히 나눠져 있음을 확인 할수 있습니다. ![]() 2. 가중치와 일반 길이를 같이 사용하기 자 한가지 예로 3개의 뷰가 세로 "LinearLayout"에 배치 되어 있습니다. 그중 하나의 뷰는 세로 길이를 "200dp"로 주고, 나머지 2개의 뷰는 가중치를 주었습니다. 그러면 어떻게 될까요? 전체 세로 길이에서 "200dp" 를 뺴고 나머지 길이를 가중치 만큼 나눠서 가지게 됩니다. 자 위와 같이 첫번째 뷰는 가중치 없이 세로 길이 "200dp"를 주어졌고, 나머지 2개의 뷰는 가중치 1:2로 주었습니다. 자 이렇게 되면 전체 세로 길이에서 "200dp" 를 빼고 나머지 부분에서 1:2로 나눠 가지게 됩니다. ![]() 위에 보시다 시피 200dp로 우선 뷰를 차지 하고 나머지 부분을 1:2로 나눠 가지는 모습을 확인할 수 있습니다. 이렇게 섞어서 사용하시면 뷰를 구성하는 훨신 수월하실 겁니다. 리니어 레이아웃을 많이 사용하는 이유가 바로 이 가중치를 줄수 있기 때문일 것입니다. 이렇게 가중치로 뷰를 구성하여서 어떠한 해상도라도 동일한 뷰들의 배치를 볼수 있는 것이죠. 가중치 사용이 익숙해 질때 쯤이면 화면 구성하는 것 쯤은 손쉽게 하실수 있으실 겁니다. 그럼 이번 강의는 여기까지 하겠습니다.
|
|||||||||||