메모 log (간단메모)/mobile
'viewTreeObserver' 뷰의 크기를 측정
abbear25
2021. 1. 14. 00:20
viewTreeObserver
root_view.viewTreeObserver.addOnGlobalLayoutListener ( object: ViewTreeObserver.OnGlobalLayoutListener{
override fun onGlobalLayout() {
//뷰 측정 등을 구현
//사용 후 해제
root_view.viewTreeObserver.removeOnGlobalLayoutListener(this)
}
})
최상단 뷰가 화면에 그려진 후에 호출되는 관찰자
xml 레이아웃에 가장 바깥쪽 요소에 관찰자를 지정해야 함
예전에는 다른 뷰의 크기를 측정 후 특정 뷰의 크기를 지정하기 위해서 뷰를 커스텀하거나 딜레이를 주는 형태로 구현하였으나
해당 관찰자를 통해 뷰가 반영된 시점을 정확히 파악하여 크기를 측정할 수 있음
*뷰가 그려지기 전에 크기를 측정하면 높이과 넓이가 모두 0으로 나옴
반응형