본문 바로가기
program

안드로이드 MeasureSpec

by vovona 2014. 10. 2.
넘어오는 파라미터는 부모 뷰로부터 결정된 치수제한을 의미한다. 또한 파라미터에는 bit 연산자를 사용하여 모드와 크기를 같이 담고 있다. 모드는 MeasureSpec.getMode(spec) 형태로 얻어오며 다음과 같은 3종류가 있다.

MeasureSpec.AT_MOST wrap_content (뷰 내부의 크기에 따라 크기가 달라짐)
MeasureSpec.EXACTLY fill_parent, match_parent (외부에서 이미 크기가 지정되었음)
MeasureSpec.UNSPECIFIED MODE 가 셋팅되지 않은 크기가 넘어올때 (대부분 이 경우는 없다)

FILL_PARENT, MATCH_PARENT를 사용하면 윗단에서 이미 크기가 계산되어 EXACTLY로 넘어온다.이러한 크기는 MeasureSpec.getSize(spec)으로 얻어낼 수 있다. 이 메소드에서는 setMeasuredDimension(int measuredWidth, int measuredHeight)를 호출해 주어야 하는데, super.onMeasure()에서는 기본적으로 이를 계산하는 함수를 포함하고 있다.
레이아웃 파일에서 크기를 wrap_content로 설정했다면 이 함수에서 크기를 계산해서 설정해주어야 한다. 그렇지 않으면 항상 match_parent로 설정된다.

'program' 카테고리의 다른 글

UML Class Diagram 정리  (0) 2015.10.09
PC간 마우스/키보드 공유 - Synergy  (0) 2015.07.29
samba 설치  (1) 2014.09.02
android:configChanges 관련 값  (0) 2014.07.27
안드로이드 개발 환경 설정 (Eclipse)  (0) 2014.02.08