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
好久之前的草稿了菱农,實際內(nèi)容已經(jīng)忘掉了,所以以后有問題想寫什么蹲姐,還是得趕緊寫御铃。
大概情況是
用RecyclerView做消息流
使用的是開源庫:
github地址 BaseRecyclerViewAdapterHelper
當時有大概13種消息類型扛施,所以需要不同的布局來呈現(xiàn),但是每個消息類型又有相同的控件,比如頭像和昵稱這種坷衍。
所以就偷懶,抽離一個共同組件的布局条舔,再加上一個供不同類型展示的布局區(qū)域枫耳,這樣每個不同消息塊就只要add一個view上去。
最后的結(jié)果出現(xiàn)孟抗,不同的消息類型迁杨,并不會按照我所想的钻心,老老實實的排布,原因就是recyclerView的緩存機制铅协。
而且我這里對每個view當時沒有判斷捷沸,甚至出現(xiàn)了不同類型view的疊加。
當時解決重疊是用
加上這個方案
https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/968
多個holder去處理狐史。
最后處理同一種消息類型的時候痒给,因為width要做變長,又出現(xiàn)了同一holder里的view重疊。原因同樣是recyclerView的緩存機制導致骏全。
那recyclerView的緩存機制到底是什么苍柏?
http://www.reibang.com/p/193fb966e954
當我把父級msg_container換成LinearLayout的時候,view是依次豎著排姜贡,其實就是出現(xiàn)了view的疊加试吁。
后來一直沒搞出來,直接單獨寫了一個布局給這個變長消息類型楼咳,不再用addView的方式了熄捍。
其實就是忘了細節(jié)了,太監(jiān)了