问题描述
在 Android 11 之前,以下代码在获取视图大小方面没有任何问题。
** view1,view2 是一个可见性=不可见的文本视图。
fun onCreate(...){
log("point1")
view1.viewTreeObserver.addOnGlobalLayoutListener(object :
ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
log("point2")
view1.viewTreeObserver.removeOnGlobalLayoutListener(this)
view2.viewTreeObserver.addOnGlobalLayoutListener(object :
ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
log("point3")
view2.viewTreeObserver.removeOnGlobalLayoutListener(this)
//get width of view1 and view2
}
})
}
})
}
然而,在我将我的设备更新到 Android11 之后,我的日志打印了“point2”,但从不记录“point3”,这意味着第二个 GlobalLayoutListener 没有被调用。
幸运的是,我通过这样做成功了,这对我来说没有任何意义。
fun onCreate(...){
log("point1")
view1.viewTreeObserver.addOnGlobalLayoutListener(object :
ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
log("point2")
view1.viewTreeObserver.removeOnGlobalLayoutListener(this)
//adding this line makes this code somehow to work.
**textViewSomethingElse.text = "SOME TEXT FOR VISUAL LOGGING.."**
view2.viewTreeObserver.addOnGlobalLayoutListener(object :
ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
log("point3")
view2.viewTreeObserver.removeOnGlobalLayoutListener(this)
//get width of view1 and view2
}
})
}
})
}
为什么会发生这种情况?我幸运地找到的解决方法只是一个黑客。有没有合适的方法可以达到相同的结果?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)