블로그 이미지
흰색앵초

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2014. 10. 10. 15:34 프로그래밍/Android

안드로이드에서 간혹 ImageView나 혹은 다른 View의 너비나 높이를 구해야할 때가 있습니다. 그렇지만 가끔 값이 제대로 리턴되지 않고 0으로 반환되는 경우가 있는데 이는 뷰가 완전히 그려지기 전에 값이 리턴되기 때문입니다. 해결책은 아래와 같습니다.


frameLayout1.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
	public void onGlobalLayout() { 
		//뷰가 불러지고 나서 처리할 코드 입력
		Toast.makeText(getApplicationContext(), ""+imageView1.getWidth(), Toast.LENGTH_LONG).show();
		frameLayout1.getViewTreeObserver().removeGlobalOnLayoutListener(this); //  젤리빈 미만에서 사용
		// frameLayout1.getViewTreeObserver().removeOnGlobalLayoutListener(this); 젤리빈 이상에서 사용
	}

위와 같이 특정뷰가 다 그려졌는지 체크한 뒤에 원하시는 코드를 입력하셔서 컨트롤 하신 뒤에 해당 리스너를 삭제처리해서 사용하시면 됩니다.


posted by 흰색앵초