CAFE

4. 화면 배치를 결정하는 LayoutParams에 대해서

작성자슈퍼성근|작성시간11.01.24|조회수7,828 목록 댓글 34

슈퍼드로이드 카페의 안드로이드 강좌가 책으로 나왔습니다.

도서명 : 이것이 안드로이드다.

도서링크 : 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가 존재한다.

LayoutParamsMarginLayoutParams 이다.

그리고 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의 상세 속성에 대해 배울 것이다. ^^







!!! 위의 주제에 해당하는 적당한 예를 댓글로 남겨 주세요. ^^

    활용 방안의 예는 다른 개발자들에게 많은 도움이 됩니다. 


!!! 카페의 활성화를 위해 추천 버튼을 눌러 주세요. 


다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 답댓글 작성자슈퍼성근 작성자 본인 여부 작성자 | 작성시간 14.08.05 영광입니다 ㅜㅜ 감사합니다
  • 작성자강군이 | 작성시간 14.09.16 쉬운그림과 설명~ 이해가 쏙쏙 됩니다 ^^
  • 답댓글 작성자슈퍼성근 작성자 본인 여부 작성자 | 작성시간 14.09.16 감사합니다. 뿌듯하네요.
  • 작성자iTaeyoung | 작성시간 15.12.08 강좌 감사합니다^^
  • 작성자세런티피티 | 작성시간 15.12.16 강좌가 이해하기 쉽게 너무 잘 되있네요 감사합니다.
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼