RecyclerView 内容高度

RecyclerView content height

有什么好的方法可以获取RecyclerView里面内容的高度吗?考虑到所有项目可能具有不同的高度。

在我的场景中,我使用的是 LinearLayoutManager。

我四处搜索,发现这个问题的结果少得惊人。

RecyclerView 是一个 ViewGroup。您可以使用 getChildAt / getChildCount 来获取观看次数。然后从视图中,你可以调用 getWidth / getHeight.

如果您有 ItemDecorators 并且需要获取包含它们的大小,您可以使用 LayoutManagergetDecorated<xxx> 方法。

RecyclerView.computeVerticalScrollRange 将给出一个估计 - 它平均当前显示的行的高度并将其乘以 getItemCount

的结果

computeHorizontalScrollRange 宽度,如果你的方向是水平的。

我用来试验 View.measure 方法:

recycler.measure(View.MeasureSpec.makeMeasureSpec(recycler.width, View.MeasureSpec.EXACTLY), View.MeasureSpec.UNSPECIFIED)
val height = recycler.measuredHeight

如果您的项目足够简单(例如固定高度),它应该可以。