Android/Android 일반
코딩으로 뷰의 크기확인 및 수정
lipnus
2019. 5. 20. 14:51
반응형
코딩으로 뷰의 크기 보기 및 수정
이 예시에서는 스크롤뷰의 크기를 알고 내부의 뷰(topConstraint)의 크기를 조절
onCreate에서 크기를 구하면 0으로 나온다.
아직 뷰가 그려지지 않았기 때문이다.
OnGlobalLayoutListenerGlobal Layout의 상태나 ViewTree 상태가 변화했을때 불리는 리스너이다.
이 리스너를 사용하면 View가 전부 그려진 후 호출되므로 View의 크기를 구할수 있다
리스너 선언
val mGlobalLayoutListener = ViewTreeObserver.OnGlobalLayoutListener {
val scHeight = scrollView.height
val supportBtn = supportBtn.height
// Apply the changes
topConstraint.minHeight = scHeight - supportBtn - 30
}
리스너 등록
scrollView.viewTreeObserver.addOnGlobalLayoutListener(mGlobalLayoutListener)
리스너 제거
override fun removeOnGlobalLayoutListener(observer: ViewTreeObserver, listener: ViewTreeObserver.OnGlobalLayoutListener ) {
if (observer == null) return
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN){
observer.removeGlobalOnLayoutListener(listener)
}
else {
observer.removeOnGlobalLayoutListener(listener)
}
}
한번만 사용하는 경우라면 사용 후 리스너를 제거해줘야 한다.
반응형