这有效
myView.layoutParams = myView.layoutParams.apply { height = 100 }
但这都不是(使用 android-ktx)
myView.doOnLayout {
myView.layoutParams = myView.layoutParams.apply { height = 100 }
}
nor this
myView.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
myView.layoutParams = myView.layoutParams.apply { height = 100 }
myView.viewTreeObserver.removeOnGlobalLayoutListener(this)
}
})
甚至这个也不
postDelayed({
myView.layoutParams = myView.layoutParams.apply { height = 100 }
}, 100)
作品。为什么?
改变高度或宽度LayoutParams
不影响其视野。LayoutParams
是简单的价值持有者。要应用更改,您必须致电requestLayout
:
myView.doOnLayout {
myView.layoutParams.height = 100
myView.requestLayout()
}
另一种方法是重新分配layoutParams
:
myView.doOnLayout {
myView.layoutParams = myView.layoutParams.apply {
height = 100
}
}
您的第一个示例可能有效,因为甚至在绘制视图之前就执行了分配。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)