美文网首页Android日常
Android ViewGroup.removeAllViews

Android ViewGroup.removeAllViews

作者: 盗版三弟 | 来源:发表于2020-04-01 15:15 被阅读0次

先上图看现场

bug截图

在做字体设置式 发现app内这个展示模块出现了这个内容重叠的现象,吓人 先找到这个view 看下实现方式:

1.外层是一个LinearLayout布局 ,展示时 根据服务下发数据往其中通过 addView(View child) 的方式加入;

2在修改了字号后 刷新列表时  会先调用ViewGroup.removeAllViews();再addView(child);

逻辑上没啥问题啊???(小朋友我有很多问号)

排查问题:用layoutInspector 看看里面到底有几个孩子 业务上add了4个view;mChildren里也是4个view 对啊?那那那重叠的那个是啥。。。。再看看LinearLayout中其他属性,有没有什么线索。。。。突然看到一个mDisappearingChildren的listsize=1;

看看这是个什么

看来这个removeAllView不简单 要看看源码实现,在删除逻辑中有这么一段代码:如果子view在执行动画(案例中的表情是循环动画)则把这个view保存mDisappearingChildren

在viewGroup的draw逻辑中果然找到了这个重叠的view被画上去了

原因找到了:执行动画的view是不会被ViewGroup被立即remove掉的,等动画结束后才会被remove;解决办法就是先把子view的动画先结束 再执行removeAllView。

相关文章

网友评论

    本文标题:Android ViewGroup.removeAllViews

    本文链接:https://www.haomeiwen.com/subject/urfauhtx.html