Android: StaggeredGridLayoutManager blättert beim Initialisieren nach oben

8

Ich verwende StaggeredGridLayoutManager für meine Bildergalerie. Ich habe setReverseLayout(true) eingestellt, damit Bilder von unten gestapelt werden.

Das Problem, mit dem ich konfrontiert bin, ist, dass bei der Initialisierung der App die Scroll-Punkte unten in der Galerie angezeigt werden. Ich möchte, dass die Bildlaufleiste oben in der Galerie angezeigt wird, wenn der Benutzer die App zum ersten Mal startet.

Ich habe versucht, scrollToPosition (das folgende Code-Snippet) zu verwenden, aber die Scroll endet irgendwo in der Mitte der Galerie, wahrscheinlich weil die Bilder zum Zeitpunkt des Aufrufs von scrollToPosition nicht richtig geladen wurden.

%Vor%

Gibt es eine richtige Methode, die Schriftrolle oben anstatt unten zu zeigen?

    
Neo 07.03.2016, 12:55
quelle

5 Antworten

2

Ich habe ein ähnliches Problem vorher gelöst und hier ist Methode:

%Vor%

Und:

%Vor%

Und:

%Vor%

Die Bedeutung ist einfach: Lassen Sie RecyclerView immer nach oben scrollen, bis der Benutzer sie berührt. Hoffe das kann dir helfen.

    
ywwynm 14.11.2016, 08:22
quelle
1

Versuchen Sie, die erste sichtbare Position zu finden, indem Sie anrufen findFirstCompletelyVisibleItemPositions

oder findFirstVisibleItemPositions

Rufen Sie Ihre Recycler-Ansicht scrollToPosition mit der Position auf, die Sie mit der / den vorherigen Methode (n) erhalten haben

    
Mina Samy 07.03.2016 13:02
quelle
1

Ich habe scrolltoposition im dataobserver verwendet und jetzt funktioniert es gut ..

Wenn die Recycleransicht geladen wird, sind die Elemente oben mit dem folgenden Code sichtbar:

%Vor%

, um nach neu hinzugefügten Elementen wie in der Chat-Ansicht zu blättern, verwenden Sie den folgenden Code.

%Vor%     
uguboz 09.11.2016 18:11
quelle
0

Verwenden Sie stattdessen scrollToPositionWithOffset() function von StaggeredGridLayoutManager . Ich fand es zuverlässiger als scrollToPosition . Stellen Sie außerdem sicher, dass Sie diese Funktion in Handler().post() ausführen. Dies führt dazu, dass Runnable zur Nachrichtenwarteschlange hinzugefügt wird. Es wird ausgeführt, sobald der UI-Thread frei ist.

%Vor%     
Abhishek V 09.11.2016 05:32
quelle
0

Dieser Code kann Ihnen helfen, ich habe diesen Link auch im Code verwendet

Ссылка

  

Jedes AdapterView (z. B. ListView und GridView) unterstützt   Bindung an die OnScrollListener-Ereignisse, die immer dann ausgelöst werden, wenn a   Der Benutzer scrollt durch die Sammlung. Mit diesem System können wir definieren   ein einfacher EndlessScrollListener, der die meisten Anwendungsfälle unterstützt   Erstellen einer eigenen Klasse, die OnScrollListener erweitert:

%Vor%     
Vijay Kumar M 15.11.2016 17:06
quelle

Tags und Links