android Recyclerview Layoutmanager的onLayoutChildren在item内容更改时调用

2023-12-31

我有一个带有自定义布局管理器的回收器视图(它是一个twowayview staggeredgridview布局管理器https://github.com/lucasr/twoway-view/blob/master/layouts/src/main/java/org/lucasr/twowayview/widget/StaggeredGridLayoutManager.java https://github.com/lucasr/twoway-view/blob/master/layouts/src/main/java/org/lucasr/twowayview/widget/StaggeredGridLayoutManager.java )

我正在使用它来显示图像列表。 这些图像是异步加载的,这意味着,当项目变为活动状态时,我解码图像数据,然后将该位图加载到这些列表项视图上。

现在,问题是每当我将图像位图设置到项目的图像视图上时,它都会导致在布局管理器上调用 onLayoutChildren ,然后再次布局所有子项。

这是预期的行为吗?意思是,更改子元素(此处为 imageview )的内容会导致父 recyclerview 在其布局管理器上发出 onLayoutChildren ?

如果不是,那么我该如何防止这种情况?

Thanks,


是的,这就是布局系统的工作原理。如果子级请求布局,则其所有父级的 onLayout 将被调用。

如果新位图到达时您的视图没有改变大小,您可以通过编写自定义视图来处理它,该自定义视图扩展您的视图并防止requestLayout来电。 搜索eatRequestLayout查看 RecyclerView 源代码以了解如何做到这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android Recyclerview Layoutmanager的onLayoutChildren在item内容更改时调用 的相关文章

随机推荐