RecyclerView 内容高度
RecyclerView content height
有什么好的方法可以获取RecyclerView里面内容的高度吗?考虑到所有项目可能具有不同的高度。
在我的场景中,我使用的是 LinearLayoutManager。
我四处搜索,发现这个问题的结果少得惊人。
RecyclerView 是一个 ViewGroup
。您可以使用 getChildAt
/ getChildCount
来获取观看次数。然后从视图中,你可以调用 getWidth
/ getHeight
.
如果您有 ItemDecorators 并且需要获取包含它们的大小,您可以使用 LayoutManager
的 getDecorated<xxx>
方法。
RecyclerView.computeVerticalScrollRange
将给出一个估计 - 它平均当前显示的行的高度并将其乘以 getItemCount
的结果
computeHorizontalScrollRange
宽度,如果你的方向是水平的。
我用来试验 View.measure 方法:
recycler.measure(View.MeasureSpec.makeMeasureSpec(recycler.width, View.MeasureSpec.EXACTLY), View.MeasureSpec.UNSPECIFIED)
val height = recycler.measuredHeight
如果您的项目足够简单(例如固定高度),它应该可以。
有什么好的方法可以获取RecyclerView里面内容的高度吗?考虑到所有项目可能具有不同的高度。
在我的场景中,我使用的是 LinearLayoutManager。
我四处搜索,发现这个问题的结果少得惊人。
RecyclerView 是一个 ViewGroup
。您可以使用 getChildAt
/ getChildCount
来获取观看次数。然后从视图中,你可以调用 getWidth
/ getHeight
.
如果您有 ItemDecorators 并且需要获取包含它们的大小,您可以使用 LayoutManager
的 getDecorated<xxx>
方法。
RecyclerView.computeVerticalScrollRange
将给出一个估计 - 它平均当前显示的行的高度并将其乘以 getItemCount
computeHorizontalScrollRange
宽度,如果你的方向是水平的。
我用来试验 View.measure 方法:
recycler.measure(View.MeasureSpec.makeMeasureSpec(recycler.width, View.MeasureSpec.EXACTLY), View.MeasureSpec.UNSPECIFIED)
val height = recycler.measuredHeight
如果您的项目足够简单(例如固定高度),它应该可以。