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에 변화가 있을때 마다 계속 호출되기 때문에, 한번 실행되면 리스너등록을 해제 시켰다.