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)
}
}

한번만 사용하는 경우라면 사용 후 리스너를 제거해줘야 한다.




참고: https://damedame.tistory.com/entry/View%EC%9D%98-%EC%9C%84%EC%B9%98-%EC%82%AC%EC%9D%B4%EC%A6%88-%EA%B5%AC%ED%95%98%EA%B8%B0

반응형

'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