2015-02-07 565 views
7

有没有什么好的方法来获取RecyclerView内的高度?考虑到所有项目可能有不同的高度。RecyclerView内容高度

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

我周围搜索,发现这个问题令人惊讶的结果很少。

回答

12

RecyclerView是ViewGroup。您可以使用getChildAt/getChildCount来获取视图。然后从视图中,您可以拨打getWidth/getHeight

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

+4

考虑到RECYCLERView的性质,是不是只会得到实际创建的子视图?假设我有100个项目,也许只有10个视图被充气和回收。 – Kenneth 2015-02-09 05:44:23

+0

如果您试图找到未布置的物品的高度,则不能,因为它们没有布置。除了布置每个单独的项目之外,不可能有解决方案,这会破坏使用RecyclerView的目的。 – yigit 2015-02-09 21:42:47

+0

但RecylerView知道足够的正确布局滚动条,所以它必须知道一些关于它的内容高度? – Kenneth 2015-02-10 03:50:17

19

RecyclerView.computeVerticalScrollRange会给估计 - 它均线当前正在显示的行的高度,乘以通过的getItemCount

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

+2

这应该是一个被接受的答案。 – 2017-04-05 13:39:32