'MeasureSpec'에 해당되는 글 1건

  1. 2011.06.07 android onDraw전에 View의 크기를 알아오기 4
Android2011. 6. 7. 09:35
Android에서 View의 크기를 알아오고 싶을때 일반적으로

 view.getWidth();
 view.getHeight();
위의 api를 써서 원하는 view의 크기를 얻어 옵니다.
위의 방법은 View가 onDraw를 통하여 화면에 그려 졌을 경우에 크기를 얻을 수 있습니다. 만약 그전에 위의 api를 호출하게 된다면 0값을 얻어오게 됩니다.

만약 onDraw전에 View에 크기를 알고 싶은 경우에는
view.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); 
view.getMeasuredWidth();
 view.getMeasuredHeight();
위의 api를 사용하면 됩니다.
여기서 중요한 것은 view.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED) 메소드 인데 이 메소드를 통하여 view의 부모에게 크기를 위임하여 알아오게 해줍니다. 위 메소드의 파라미터로 넘겨지는 MeasureSpec은

MeasureSpec.AT_MOST : wrap_content 에 매핑되며 뷰 내부의 크기에 따라 크기가 달라진다.
MeasureSpec.EXACTLY : fill_parent, match_parent 로 외부에서 미리 크기가 지정되었다.
MeasureSpec.UNSPECIFIED : Mode 가 설정되지 않았을 경우. 소스상에서 직접 넣었을 때 주로 불립니다.

위와 같은 설정을 지원해줌으로 원하는 설정값을 넘겨주시면 됩니다.

도움이 되셨으면 좋겠네요~ ^^
Posted by 위푸