这个是做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出了问题。