반응형
코딩으로 뷰의 크기 보기 및 수정
이 예시에서는 스크롤뷰의 크기를 알고 내부의 뷰(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)
}
}
한번만 사용하는 경우라면 사용 후 리스너를 제거해줘야 한다.
반응형
'Android > Android 일반' 카테고리의 다른 글
Drawable xml 버튼 (0) | 2019.06.13 |
---|---|
dimen에서 숫자만 가져오기 (0) | 2019.05.28 |
ViewPager양쪽에 여백 (0) | 2019.05.15 |
DisplayMetrics.density (0) | 2019.05.15 |
TabLayout (0) | 2019.05.14 |