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