android开发分享了解RecyclerView setHasFixedSize

我有一些麻烦了解setHasFixedSize() 。 我知道,当RecyclerView的大小没有改变时,它被用于优化,从文档。

这是什么意思? 在大多数情况下, ListView几乎总是有固定的大小。 在什么情况下,它不会是一个固定的大小? 这是否意味着它在屏幕上占有的实际房地产会随着内容而增长?

    RecyclerView的一个非常简化的版本有:

     void onItemsInsertedOrRemoved() { if (hasFixedSize) layoutChildren(); else requestLayout(); } 

    这个链接描述了为什么调用requestLayout可能是昂贵的。 基本上,无论何时插入,移动或移除项目,RecyclerView的大小(宽度和高度)都可能改变,并且视图层次结构中任何其他视图的大小都可能改变。 如果项目经常被添加或移除,这特别麻烦。

    在添加或删除RecyclerView中的项目时,通过将setHasFixedSize设置为true,避免不必要的布局过程,并且不会更改其高度或宽度。

    可以确认setHasFixedSize涉及RecyclerView本身,而不是每个项目的大小适应它。

    您现在可以在RecyclerView上使用android:layout_height="wrap_content" ,除此之外,当RecyclerView为空时,允许CollapsingToolbarLayout知道它不应该折叠。 这只适用于在RecylcerView上使用setHasFixedSize(false)的情况。

    如果在RecyclerView上使用setHasFixedSize(true) ,那么即使RecyclerView确实是空的,这种防止CollapsingToolbarLayout崩溃的行为也不起作用。

    如果setHasFixedSize与项目的大小有关,那么当RecyclerView没有项目时,它应该没有任何影响。

    ListView有一个类似的命名函数,我认为它反映了有关单个列表项高度的信息。 RecyclerView的文档很清楚地表明它指的是RecyclerView本身的大小,而不是其大小。

    从上面的setHasFixedSize()方法的RecyclerView源注释:

      * RecyclerView can perform several optimizations if it can know in advance that changes in * adapter content cannot change the size of the RecyclerView itself. * If your use of RecyclerView falls into this category, set this to true. 

    setHasFixedSize(true)表示RecyclerView具有固定宽度和高度的子项(项目)。 这使RecyclerView能够根据您的适配器计算出整个列表的确切高度和宽度,从而更好地进行优化。

      以上就是android开发分享了解RecyclerView setHasFixedSize相关内容,想了解更多android开发(异常处理)及android游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/addevelopment/515511.html

      (0)
      上一篇 2020年12月1日
      下一篇 2020年12月1日

      精彩推荐