这个是做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出了问题。
解决LayoutTransition导致ScrollView布局问题
本文探讨了一个在使用systemui开发中遇到的bug:在删除通知后无法再接收到通知,通过深入分析发现是由于LayoutTransition的影响导致ScrollView的onlayout方法未被正确调用。文章详细介绍了问题定位过程及解决方案。
1522

被折叠的 条评论
为什么被折叠?



