为什么Viewgroup的getHeight()不会改变

时间:2011-07-26 22:04:23

标签: android

我有一个LinearLayout(ViewGroup)。在我的代码中,我向LinearLayout添加了一个子视图(另一个线性布局)。我的问题是为什么LinearLayout的getHeight()返回SAME值?在手机上,我确实看到我的孩子线性布局是可见的并且显示正确。但是为什么getHeight()没有给我正确的值?

我已经查看了ViewGroup中add()的源代码。它确实调用'requestLayout()'所以我希望ViewGroup的getHeight()能够正确地进行更新。我是对的吗?

1 个答案:

答案 0 :(得分:4)

getHeight()没有立即更新,requestLayout()请求稍后发生的布局传递(它是异步的)。您必须在UI事件队列中发布事件以在layotu传递后检索高度:

requestLayout();
post(new Runnable() {
  public void run() {
    // getHeight
  }
});