我有一个LinearLayout(ViewGroup)。在我的代码中,我向LinearLayout添加了一个子视图(另一个线性布局)。我的问题是为什么LinearLayout的getHeight()返回SAME值?在手机上,我确实看到我的孩子线性布局是可见的并且显示正确。但是为什么getHeight()没有给我正确的值?
我已经查看了ViewGroup中add()的源代码。它确实调用'requestLayout()'所以我希望ViewGroup的getHeight()能够正确地进行更新。我是对的吗?
答案 0 :(得分:4)
getHeight()没有立即更新,requestLayout()请求稍后发生的布局传递(它是异步的)。您必须在UI事件队列中发布事件以在layotu传递后检索高度:
requestLayout();
post(new Runnable() {
public void run() {
// getHeight
}
});