슈퍼드로이드 카페의 안드로이드 강좌가 책으로 나왔습니다.
도서명 : 이것이 안드로이드다.
도서링크 : http://www.yes24.com//24/goods/13950202
================================================================================================
1. LayoutParams 이란?
이전 강좌에 아래와 같이 View와 ViewGroup이 배치 될 수 있다고 하였다.
ViewGroup이 View를 배치할 때 꼭 알아야 할 사항이 있다.
바로 LayoutParams이다.
ViewGroup 에 하나의 View를 추가 하는 경우 꼭 LayoutParams을 하나 생성해서 같이 추가해 준다.
그렇다면 LayoutParams은 무엇일까?
위에 그림과 같이 ViewGroup이 View를 마음대로 배치하는 것이 아니다.
각 View와 함께 존재하는 LayoutParams 정보를 보고 배치하는 것이다.
LayoutParam 정보에는 View의 크기 View의 상/하/좌/우 여백 크기 등을 설정할 수 있으며,
특정 ViewGroup(LinearLayout, FrameLayout...)에 따라 배치와 관련된 LayoutParams 정보가 추가 될 수 있다.
2. 다양한 LayoutParams들에 관해서
아래를 도표를 보자.
상위 ViewGroup이 어떤 것이냐에 따라 다양한 LayoutParams이 View에 적용된다는 것을 볼 수 있다.
추가적으로 상세한 LayoutParams 정보를 살펴 보자.
1번의 경우 모든 View들의 기본 배치 정보를 나타내었고,
2,3,4,5번의 경우 각 ViewGroup별 추가된 배치 관련 정보이다.
자 이제는 개발자의 입장에서 LayoutParams Class에 대해 살펴보자.
ViewGroup는 내부적으로 Layout과 관련된 두가지 Inner Class가 존재한다.
LayoutParams와 MarginLayoutParams 이다.
그리고 MarginLayoutParams 은 LayoutParams을 상속 받은 Class이다.
이 두가지 LayoutParams Class에 대해서 상세히 보자.
즉 MarginLayoutParams의 경우 View의 상/하/좌/우 여백 설정을 위한 Class이며,
LayoutParams의 경우 View의 너비/높이를 설정하기 위한 Class이다.
본 두 Class는 배치를 위한 가장 기본적인 Class이다.
이제 특정 ViewGroup들의 확장된 LayoutParams Class에 대해서 살펴 보자.
① LinearLayout.LayoutParams
위의 Class를 잘 살펴 보면 기본적으로 MarginLayoutParams을 상속 받아
추가적인 LinearLayout.LayoutParams을 Class를 구현하였다.
즉 이 말은
- 상/하/좌/우 배치 정보 (ViewGroup.MarginLayoutParams)
- 너비 높이 정보 (ViewGroup.LayoutParams)
- 중력방향 및 가중치 정보 배치 (LinearLayout.LayoutParams)
세가지를 이용해서 ViewGroup이 View를 배치할 수 있는 것이다.
LinearLayout에 추가된 LayoutParams는 중력방향 및 가중치 정보 배치 기능이다.
본 기능에 대해서는 다음 강좌에서 상세히 살펴 보겠다.
걱정하지 말고 넘어가자.
② RelativeLayout.LayoutParams
본 내용도 ①의 내용과 거의 유사 함으로 상세한 설명은 생략하고
본 LayoutParams에서 추가된 부분만 살펴 보자.
RelativeLayout은 View의 상관 관계에 의해서 배치된다고 하였다.
그러므로 상관관계를 처리할 수 있는 속성이 추가 되어야 한다.
RelativeLayout의 1~16번까지의 속성을 살펴보면
상관관계의 의한 속성임을 알 수 있다.
본 기능에 대해서는 다음 강좌에서 상세히 살펴 보겠다.
걱정하지 말고 넘어가자.
③ FrameLayout.LayoutParams
본 내용도 ①의 내용과 거의 유사 함으로 상세한 설명은 생략하고
본 LayoutParams에서 추가된 부분만 살펴 보자.
FrameLayout은 View를 ViewGroup 영역내
| 좌측상단 | 상단중앙 | 우측상단 |
| 좌측중앙 | 정중앙 | 우측중앙 |
| 좌측하단 | 중앙하단 | 우측하단 |
에 배치 할 수 있으며, View를 겹쳐서 배치할 수 있는 ViewGroup이다.
그러므로 중력 방향 배치에 의한 설정값 Gravity 값만 추가되면 된다.
본 기능에 대해서는 다음 강좌에서 상세히 살펴 보겠다.
걱정하지 말고 넘어가자.
④ AbsoluteLayout.LayoutParams
위의 Class를 잘 살펴 보면 MarginLayoutParams을 상속 받아
구현한 것이 아니라, ViewGroup.LayoutParams만 상속 받았다.
지금까지 강좌를 잘 따라왔다면 쉽게 이해가 될 것이다.
AbsoluteLayout은 절대 좌표를 이용해서 View를 배치한다.
그러므로 MarginLayoutParams 속성인 상/하/좌/우 여백을
사용할 필요가 없다.
자 그럼 AbsoluteLayout의 추가적이 LayoutParams 속성을 살펴 보자.
당연히 절대 좌표 속성 값 x,y 밖에 없다.
지금까지 View와 ViewGroup 그리고 화면 배치 속성에 관한 LayoutParams에 대해
살펴 보았다.
위에서 제시한 LayoutParams들 말고도 더 많은 LayoutParams이 존재한다.
( AbsListView.LayoutParams
Gallery.LayoutParams
WindowManager.LayoutParams
RadioGroup.LayoutParams,
TableLayout.LayoutParams, TableRow.LayoutParams)
하지만 모두 알 필요는 없다.
본 강좌의 내용을 이해했다면 추가적이 다른 LayoutParams에 대해서는
쉽게 접근할 수 있다. 분명히. 확실히... ^^
다음 강좌는 ViewGroup의 상세 속성에 대해 배울 것이다. ^^
!!! 위의 주제에 해당하는 적당한 예를 댓글로 남겨 주세요. ^^
활용 방안의 예는 다른 개발자들에게 많은 도움이 됩니다.
!!! 카페의 활성화를 위해 추천 버튼을 눌러 주세요.