Android App.를 개발하면서 가장 자주 사용되는 것 중 하나가 바로 View customizing 일 것입니다.
일반적으로 View customizing 을 할 때 고려해야 할 size, padding 및 scrollbar 에 대해서 설명하려 합니다.

View 의 method 중에 bounds 와 관련된 가장 기본적인 method 는
Layout 들에서 호출되는 setFrame method 입니다.
이 setFrame 에서 mLeft, mTop, mRight, mBottom 들이 setting 되며,
이 값들이 실제 draw(Canvas) method 에서 사용 됩니다.

40635_130943643616411_100001023280041_170018_3673229_n.jpg


이 그림에서 알 수 있듯이,
mLeft, mTop, mRight, mBottom 은 parent 로 부터의 거리를 나타내고 있으며,
이 bounds 를 기준으로 View 를 그리기 시작합니다.

실제로 View 를 그리기 위해 중요한 또 한가지는 바로 ScrollBar 입니다.
먼저, ScrollBar 속성중에 scrollbarStyle 이 가장 중요한 역할을 차지합니다.
이 scrollbarStyle 는 아래와 같이 4개의 값을 가질 수 있습니다.
- insideOverlay
- insideInset
- outsideOverlay
- outsideInset

이 4가지의 속성을 통해 ScrollBar 의 bounds 와 내부 contents 들을 위한 padding 값에 영향을 주게 됩니다.
위의 그림은 insideOverlay 와 outsideOverlay 인 경우 ScrollBar 가 어떻게 그려지는지 보여줍니다.

이제 실제로 padding 이 어떻게 되는지 알아보겠습니다.

39723_130946410282801_100001023280041_170024_6206420_n.jpg



위와 같이 insideOverlay 와 outsideOverlay 인 경우 ScrollBar 는 padding 과 전혀 상관 없이 그려집니다.

그런데 padding 과 관련된 변수명을 자세히 보시면
left, top 과는 다르게 right, bottom 부분엔 user 라는 prefix 가 붙은 걸 보실 수 있습니다.
이와 같이 mUserRightPadding >> mRightPadding 을 변환하는 방식에서 insideOverlay 와 outsideOverlay 의 차이가 발생합니다.
40455_130947923615983_100001023280041_170028_6929107_n.jpg

http://sphotos.ak.fbcdn.net/hphotos-ak-snc4/hs263.snc4/39476_130947943615981_100001023280041_170029_5025597_n.jpg
위 그림에서 보는 것 처럼 outsideOverlay 에서는 mRightPadding = mUserRightPadding 으로 설정되지만
insideOverlay 에서는 mRightPadding = mUserRightPadding + [ScrollBar 두께] 로 설정되는 차이가 있습니다.

다음 기본 View 의 size, padding 및 scrollbar (2/4) 에서는 mScrollX 와 mScrollY 에 대해서 알아보도록 하겠습니다.
감사합니다.

FLOO ( http://floo.co.kr/ )