为什么View.getHeight()在同一个线程上完成测量传递时返回0?

时间:2018-04-22 13:11:12

标签: android

我只是android开发的初学者。我在设置View.getHeight()之后立即尝试使用view.setviaibility (View.VISIBLE)方法获取视图的高度

View.setVisibility(View.VISIBLE);
Int viewHeight=View.getHeight;.   // which returns 0

我可以理解,我们需要等待实际测量的绘制阶段,我们需要使用ViewTreeObserver侦听器来获取大小。但我的问题是我认为Android正在进行所有测量和布局传递在同一个线程中。然后,当我们调用View.SetVisibility()时,它将重新计算并执行所有测量和布局,然后执行下一行以获得高度。那为什么还没准备好呢? Android是否正在部署其他线程以进行测量和布局?

很抱歉,如果我的问题是错误的,而且太基本了,因为我只是一个初学者试图理解事物。任何帮助将受到高度赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

测量和布局推迟到下一个布局周期。这样,如果您在一个代码块中更改许多视图的大小/可见性,则不必执行多个布局重新计算。