2015-02-07 564 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