안드로이드 View의 getHeight, getWidth 하기


layout의 view의 높이, 넓이를 알려고 할 때, 

이번 프로젝트 같은 경우는 title영역에 이미지 버튼이 포함되어 있는 페이지가 있고, 없어져야 하는 페이지가 있다. 이 경우 title의 높이를 임의로 정하지 않고 image의 높이만큼 자동 잡히게 되어있는데, 이미지가 나오지 않는 경우는 다른 페이지와 높이가 달라졌다. 그래서 임의로 image의 높이만큼 title을 잡기 하기 위해 image view의 getHeight를 했다. 


OnCreate에서 view.getHeight()시 view가 그려지기 전이라 0이 리턴되었다.

구글링 결과(view가 그려지기 전에 height 가져오기)


view.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); 

view.getMeasuredWidth();
view.getMeasuredHeight();

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


더욱 정확한 방법으로는 onWindowFocusChanged에서 getheight를 해야한다.


@Override

public void onWindowFocusChanged(boolean hasFocus)

{

   int nHeight = findViewById(R.id.title).getHeight();

}





블로그 이미지

미네르바98

안드로이드와 영화 리뷰, 생활정보에 관한 내용을 기재합니다.

,