본문 바로가기

Programming

[Android] Layout - LinearLayout

728x90
반응형

Layout (레이아웃)

레이아웃은 기본적으로 ViewGroup으로 부터 파생되는 클래스로 다른 뷰을 자식으로 포함하는 뷰 컨테이너라고 보면된다. 텍스트, 버튼, 에디트와 같은 기본 위젝이 일정한 규칙에 따라 모여서 하나의 레이아웃을 구성한다. 그리로 이러한 레이아웃 여러개가 모여 하나의 액티비티 화면을 구성하게 되는것이다. 레이아웃에도 여러가지 속성이 있는데 이러한 속성에 따라서 뷰를 배치하는 방식이 다르다.


LinearLayout (리니어레이아웃)

레이아웃의 속성 중 하나로 자식 뷰를 일렬로 배치하는 레이아웃이다. XML 문서에 나타나는 순서대로 뷰가 차례대로 배치되며 별도의 지정이 없는 한 뷰 사이의 공백도 없다. 단순하면서도 직관적이기 때문에 사용하기 또한 편하다.

가장 중요한 속성으로는 orientation이며 이 속성은 뷰의 배치 방식을 수직 또는 수평으로 나눈다. vertical은 위에서 아래의 순서로 배치하며 horizontal은 왼쪽에서 오른쪽 순서로 뷰를 배치한다.


▶ gravity (정렬지정)

레이어에 뷰를 어느쪽에 배치할지에 대한 속성을 지정한단다. 수평 수직 방향에 대해 정렬 방식을 각각 지정할 수 있으며 | 연산자로 두개의 속성을 묶어서도 사용이 가능하다.

● center_horizontal : 수평으로 중앙

● left : 레이어 왼쪽에 배치. 크기의 변화가 없음

● right : 레이어 오른쪽에 배치

● fill_horizontal : 수평방향으로 가득체움

● center_vertical : 수직으로 중앙에 배치

● top : 천장에 배치

● bottom : 레이어 바닥에 위치

● fill_vertical : 수직 방향으로 가득 체움

● center : 수평, 수직으로 중앙에 배치

● fill : 레이어를 가득 체우도록 수직, 수평 크기를 확장.

위의 상수를 이용해서 사용이 가능하다. 또한 gravity와 비슷한 속성이 하나 더 있다. 그것은 layout_gravity이다. layout_gravity은 뷰 안에서의 속성을 위의 상수를 이용해서 사용할 수 있는데 뷰 안에서의 변화를 줄 수 있으며 직접 해보면 바로 적용이 가능하다.


▶ bacelineAligned (베이스 정렬)

bacelineAligned 속성은 높이가 다른 자식 뷰를 수평으로 배치할때 아래쪽 면을 수평으로 정렬 할 것인지 아닌지를 지정하는 속성이다. 값을 "true"로 지정해주면 된다. 


▶ layout_weight (참조 뷰 영역 분할)

layout_weight는 부모 레이아웃의 남은 영역을 얼마나 차지할지를 설정하는 비율 값이다. 이 값이 높을 수록 많은 영역을 차지한다. 값이 '0' 이면 자신의 고유한 크기만큼만 차지하며 값이 1 이상이면 형제 뷰들과의 비율에 따라서 부모의 영역을 균등하게 배분하여 차지한다.

layout_weight 을 사용할때 중요한것은 LinearLayout의  orientation의 속성이다. 이 속성이 수직인지 수평인지에 따라서 배분하는 영역이 정해진다.

또한 orientation의 값에 따라서 뷰의 크기 속성도 그 방향에 해당하는 속성은 0값으로 지정해주어야 한다.

orientation = horizontal 일때 layout_height = "0dp"

orientation = vertical 일때 layout_widtht = "0dp"

위의 형태로 해주어야 적용이 가능하다.


▶ padding & margin (패딩과 마진)

패딩의 속성은 뷰와 내용물 간의 간격을 지정한다. 하지만 마진의 속성은 부모와의 간격을 지정하며 근처에 형제 뷰가 있으면 형제 뷰와의 간격도 마킨만큼 떨어진다. 기본적으로 4방향으로 균등하게 떨어져며 각 면에 개별적인 지정도 할 수 있다. layout_marginLeft, layout_marginRight, layout_marginTop, layout_marginBottom 으로 각각 해줄 수 있다.


반응형

'Programming' 카테고리의 다른 글

[Android] R Class  (0) 2013.10.01
[Android] Layout - RelativeLayout, AbsoluteLayout, FrameLayout, TableLayout  (0) 2013.09.30
[Android] View  (0) 2013.09.29
[Info] 프로그래밍 언어  (0) 2013.06.15
[JAVA] 출력 스트림 ( OutputStream )  (0) 2013.06.06