2015-02-07 2 views
7

Есть ли хороший способ получить высоту содержимого внутри RecyclerView? Учитывая, что все предметы могут иметь разную высоту.RecyclerView content height

В моем сценарии я использую LinearLayoutManager.

Я искал вокруг и нашел удивительно мало результатов для этой проблемы.

ответ

12

RecyclerView - это ViewGroup. Вы можете использовать getChildAt/getChildCount для просмотра. Затем с точки зрения можно позвонить getWidth/getHeight.

Если у вас есть ItemDecorators и вам необходимо получить размер, включая их, вы можете использовать методы LayoutManagergetDecorated<xxx>.

+4

Учитывая природу RECYCLERView, разве это не приведет только к созданным представлениям ребенка? Скажем, у меня есть 100 предметов, возможно, только 10 просмотров завышены и переработаны. – Kenneth

+0

Если вы пытаетесь получить высоту предметов, которые не выложены, вы не можете, потому что они не выложены. Не может быть решения для этого, кроме того, что выкладываете каждый отдельный элемент, который побеждает цель использования RecyclerView. – yigit

+0

Но RecylerView знает достаточно, чтобы правильно расположить полосы прокрутки, чтобы он знал что-то о его содержании? – Kenneth

19

RecyclerView.computeVerticalScrollRange даст оценку - она ​​составляет в среднем высоту строк которые в данный момент отображается и умножает, что в результате getItemCount

computeHorizontalScrollRange для ширины, если вы ориентации горизонтально.

+2

Это должен быть принятый ответ. –

Смежные вопросы