避免将View.post()用于自定义视图的方法

时间:2019-04-02 11:24:59

标签: android android-view android-custom-view android-inflate

有人认为使用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()时,我确定该视图知道有关宽度和高度的所有信息。这是确保计算视图大小的正常方法吗?

0 个答案:

没有答案