有人认为使用View.post()
是一种解决方法。为了确保已计算出自定义视图的大小,我使用下面显示的方法:
创建两个布尔字段:
private var isOnSizeChangedCalled = false
private var isUpdateDataCalled = false
覆盖onSizeChanged方法:
override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
super.onSizeChanged(w, h, oldw, oldh)
viewWidth = w
viewHeight = h
isOnSizeChangedCalled = true
if (isUpdateDataCalled) {
updateView()
}
}
然后,在我的公共updateData方法中:
fun updateData(data: SomeData) {
this.data = data
isUpdateDataCalled = true
if (isOnSizeChangedCalled) {
updateView()
}
}
因此,当调用updateView()时,我确定该视图知道有关宽度和高度的所有信息。这是确保计算视图大小的正常方法吗?