2015-02-07 8 views
7

Gibt es eine gute Möglichkeit, die Höhe des Inhalts in RecyclerView zu erhalten? Unter Berücksichtigung aller Gegenstände können unterschiedliche Höhe haben.RecyclerView Inhalt Höhe

In meinem Szenario verwende ich einen LinearLayoutManager.

Ich habe gesucht und überraschend wenige Ergebnisse für dieses Problem gefunden.

Antwort

12

RecyclerView ist ein ViewGroup. Sie können getChildAt/getChildCount verwenden, um Ansichten zu erhalten. Dann aus der Sicht können Sie getWidth/getHeight anrufen.

Wenn Sie ItemDecorators haben und Größe einschließlich dieser erhalten müssen, können Sie LayoutManagergetDecorated<xxx> Methoden verwenden.

+4

In Anbetracht der Art der RECYCLERView, werden nicht nur die Child-Ansichten, die tatsächlich erstellt werden? Sagen wir, ich habe 100 Gegenstände, vielleicht sind nur 10 Ansichten aufgebläht und recycelt. – Kenneth

+0

Wenn Sie versuchen, die Höhe von Elementen, die nicht angelegt sind, zu erreichen, können Sie nicht, weil sie nicht ausgelegt sind. Dafür kann es keine Lösung geben, die jeden einzelnen Gegenstand auslegt, was den Zweck von RecyclerView zunichte macht. – yigit

+0

Aber das RecylerView weiß genug, um die Bildlaufleisten richtig zu gestalten, also muss es etwas über seine Höhe wissen? – Kenneth

19

RecyclerView.computeVerticalScrollRange wird eine Schätzung geben - es mittelt die Höhe der Zeilen gerade angezeigt wird und multipliziert das durch das Ergebnis der getItemCount

computeHorizontalScrollRange für Breite, wenn Sie Orientierung horizontal ist.

+2

Dies sollte eine akzeptierte Antwort sein. –

Verwandte Themen