RecyclerView内容高度

Ken*_*eth 13 height android android-recyclerview

有没有什么好方法可以获得RecyclerView内容的高度?考虑到所有物品可能有不同的高度.

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

我四处搜索,发现这个问题的结果令人惊讶.

小智 44

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

computeHorizontalScrollRange 如果您的方向是水平的,则为宽度.

  • 这个方法总是返回0 (3认同)

yig*_*git 16

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

如果你有ItemDecorators并需要得到大小,包括他们,你可以使用LayoutManagergetDecorated<xxx>方法.

  • 考虑到RECYCLERView的性质,是否只能获得实际创建的子视图?假设我有100个项目,可能只有10个视图被充气和回收. (7认同)
  • 它通过将当前视图的平均大小乘以适配器中的项目数来近似所有项目的总大小. (3认同)

Ber*_*ťák 5

我用 View.measure 方法进行实验:

recycler.measure(View.MeasureSpec.makeMeasureSpec(recycler.width, View.MeasureSpec.EXACTLY), View.MeasureSpec.UNSPECIFIED)
val height = recycler.measuredHeight
Run Code Online (Sandbox Code Playgroud)

如果您的物品足够简单(例如具有固定高度),那么它应该可以工作。