我有一个带有自定义布局管理器的回收站视图(它的twowayview staggeredgridview布局管理器https://github.com/lucasr/twoway-view/blob/master/layouts/src/main/java/org/lucasr/twowayview/widget/StaggeredGridLayoutManager.java)
我用它来显示图像列表。 这些图像是异步加载的,这意味着,当项目变为活动状态时,我会解码图像数据,然后将该位图加载到这些列表项视图中。
现在,问题是每当我将图像位图设置到项目的imageview上时,它会导致在布局管理器上调用onLayoutChildren,然后再布置所有子项。
这是预期的行为吗?更改子元素的内容(此处为imageview)会导致父级Recyclerview在其layoutmanager上发出onLayoutChildren?
如果没有,那我该如何防止这种情况?
谢谢,
答案 0 :(得分:6)
是的,这就是布局系统的工作原理。如果孩子请求布局,则会调用其所有父母的onLayout。
如果您的视图在新位图到达时没有更改大小,您可以通过编写扩展视图的自定义视图并阻止requestLayout
调用来处理它。
在RecyclerView的源代码中搜索eatRequestLayout
以了解如何执行此操作。