layout 的一个问题

运行的时候把子节点隐藏起来,父节点的大小是会自适应,但是如果我用destroy子节点,这个时候父节点缺不会自动适应了。这个是bug吗@jare @panda

没人答复一下吗?

@zilong

你隐藏用的是 active 吧?

是用这个

你能否提供一个简单的 demo,我看看啥原因。

等等.

NewProject.zip (265.8 KB)

修改那个if来看效果

收到。

如果你一个一个 label 节点去调用 detroy() 函数是可以的,你现在是一次把所有的 node 都调用 destroy,而 destory 并不会马上发出 active-in-hierarchy-changed 事件。

Layout 的更新逻辑是这样的:

        if (this._layoutDirty && this.node.children.length > 0) {
            this._doLayout();
            this._layoutDirty = false;
        }

在你一次性把所有的 node 都 destroy 的时候,这时候 this.node.children.length > 0 就不成立了,所以没有发生 Layout 的尺寸更新。

这个是设计如此。

多谢!

根据我们内部的讨论,这是正常行为。所以 destroyAllChildren 和 removeAllChildren,都不会刷新

layout 在 children size 为 0 的时候,是不会去刷新 layout 的
这个之前有跟王楠讨论过,设计如此
一下子把 layout 的子节点全部掏空,不做 layout 的 size 刷新