View.inflate(context,resId,root)
attachToRoot这个属性
会使某个xml最外层的属性值失效
https://bugly.qq.com/v2/crash-reporting/crashes/69bcd1f57e/10424?pid=1
https://bugly.qq.com/v2/crash-reporting/crashes/69bcd1f57e/10446?pid=1
https://bugly.qq.com/v2/crash-reporting/crashes/69bcd1f57e/10341?pid=1
好久之前的草稿了,实际内容已经忘掉了,所以以后有问题想写什么,还是得赶紧写。
大概情况是
用RecyclerView做消息流
使用的是开源库:
github地址 BaseRecyclerViewAdapterHelper
当时有大概13种消息类型,所以需要不同的布局来呈现,但是每个消息类型又有相同的控件,比如头像和昵称这种。
所以就偷懒,抽离一个共同组件的布局,再加上一个供不同类型展示的布局区域,这样每个不同消息块就只要add一个view上去。
最后的结果出现,不同的消息类型,并不会按照我所想的,老老实实的排布,原因就是recyclerView的缓存机制。
而且我这里对每个view当时没有判断,甚至出现了不同类型view的叠加。
当时解决重叠是用
加上这个方案
https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/968
多个holder去处理。
最后处理同一种消息类型的时候,因为width要做变长,又出现了同一holder里的view重叠。原因同样是recyclerView的缓存机制导致。
那recyclerView的缓存机制到底是什么?
http://www.jianshu.com/p/193fb966e954
当我把父级msg_container换成LinearLayout的时候,view是依次竖着排,其实就是出现了view的叠加。
后来一直没搞出来,直接单独写了一个布局给这个变长消息类型,不再用addView的方式了。
其实就是忘了细节了,太监了