Способ избежать использования View.post () для пользовательских представлений - PullRequest
0 голосов
/ 02 апреля 2019

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

...