넘어오는 파라미터는 부모 뷰로부터 결정된 치수제한을 의미한다. 또한 파라미터에는 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 |