setLayoutParams may fail when called during another layout period
or inner of a callback function in layout period
we can use post
to setLayoutParams in next layout period
kotlin
binding.image.post {
val fixedHeight = (binding.image.measuredWidth / ratio).toInt()
binding.image.setLayoutParams { height = fixedHeight }
}