android-ktx
android-ktx copied to clipboard
Extension for GlobalLayoutListener
inline fun View.doOnGlobalLayout(crossinline action: (view: View) -> Unit) {
val vto = viewTreeObserver
vto.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
action(this@doOnGlobalLayout)
when {
vto.isAlive -> vto.removeOnGlobalLayoutListener(this)
else -> viewTreeObserver.removeOnGlobalLayoutListener(this)
}
}
})
}
Usage:
view.doOnGlobalLayout { ... }
Another alternative is as: https://stackoverflow.com/a/36279773/504012