«

onmeasure被调用了但是onlayout没有被调用

时间:2024-3-2 17:05     作者:韩俊     分类: Html+Css


这个是做systemui的时候的一个bug,就是发现打开通知中心后,删除一个通知之后再也接收不到通知了,当然通知删除有个动画。通知列表放在一个scrollView里面。调试发现onmeasure被调用了但是onlayout没有被调用。跟踪layout的过程终于发现是LayoutTrasition的问题导致scrollview的onlayout调用ViewGroupe的layout时出现了问题。


如下是ViewGroup的layout函数

    @Override
    public final void layout(int l, int t, int r, int b) {
        if (!mSuppressLayout && (mTransition == null || !mTransition.isChangingLayout())) {
            if (mTransition != null) {
                mTransition.layoutChange(this);
            }
            super.layout(l, t, r, b);
        } else {
            // record the fact that we noop'd it; request layout when transition finishes
            mLayoutCalledWhileSuppressed = true;
        }
    }

调试发现
mTransition.isChangingLayout()

这个一直是true,函数直接返回了。

mTransaction是一个LayoutTransition对象。所以发现是LayoutTransition出了问题。

标签: javascript html css

热门推荐