onmeasure被调用了但是onlayout没有被调用
这个是做systemui的时候的一个bug,就是发现打开通知中心后,删除一个通知之后再也接收不到通知了,当然通知删除有个动画。通知列表放在一个scrollView里面。调试发现onmeasure被调用了但是onlayout没有被调用。跟踪layout的过程终于发现是LayoutTrasition的问题导致scrollview的onlayout调用ViewGroupe的layout时出现了问题。
如下是ViewGroup的layout函数
@Overridepublic 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 finishesmLayoutCalledWhileSuppressed = true;}}
调试发现
mTransition.isChangingLayout()
这个一直是true,函数直接返回了。
mTransaction是一个LayoutTransition对象。所以发现是LayoutTransition出了问题。