android tech.

View 사이즈 측정을 위해 ViewTreeObserver 사용

zimamdero 2014. 3. 3. 14:50

안드로이드에서 View 의 크기(width, height)를 얻을 수 있는 시점이 애매하다. activity가 실행 초기에 특정 view의 크기를 얻어야하는 경우, 대부분 view.getWith() = 0, view.getHeight() = 0 인 결과를 얻었을 것이다. onResume() 후에 view들의 측정이 끝나기 때문이다. 이럴때 ViewTreeObserver를 사용하면 도움이 될 것이다.


ViewTreeObserver ob = view.getViewTreeObserver();

ob.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

@Override

public void onGlobalLayout() {


                // 측정


                ViewTreeObserver ob = view.getViewTreeObserver();

ob.removeGlobalOnLayoutListener(this);

}

});


* onGlobalLayout() 은 해당 view tree에 변화가 있을때 마다 계속 호출되기 때문에, 한번 실행되면 리스너등록을 해제 시켰다.