Существует мнение, что использование 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 (), я уверен, что представление знает все о его ширине и высоте.Это нормальный способ убедиться, что размер представления рассчитан?