6

Im jetzt mit RecyclerView spielen und eher zufällig auf das folgende Problem. Wenn RecyclerViews LinearLayoutManager eine Entscheidung darüber trifft, ob die Ansicht vom Bildschirm verschwunden ist (also Recycler sein kann), berücksichtigt sie nicht Views translationY.RecyclerView nicht Übersetzung respektieren, wenn Ansichten Recycling

Also im Wesentlichen, wenn ich scrollen und ich habe Ansichten mit positiven translationY, LinearLayoutManager denkt, dass die Ansicht außerhalb des Bildschirms ist, aber in der Tat ist es immer noch sichtbar (weil es nach unten übersetzt wird).

Ich bemerkte, dass die Art und Weise LinearLayoutManager macht diese Entscheidung - ist mit Blick auf getDecoratedBottom(View), also habe ich versucht, getDecoratedBottom(View) außer Kraft zu setzen, um auch Übersetzung. Leider vermasselt es das Layout vollständig up - diese Methode wird auch verwendet, wenn wir neue Objekte Layout, so neue Objekte zusätzliche Übersetzung erhalten (oben auf bestehende) ..

Gibt es eine einfache Möglichkeit, LinearLayoutManager zu sagen, zu betrachten translation Attribut, wenn es eine Entscheidung über die Wiederverwertungsansicht trifft, ohne LayoutManager von Grund auf neu zu implementieren?

+0

Haben Sie eine Lösung für das Problem gefunden? –

+0

@ZakharovRoman yeah ... Forked LinearLayoutManager Implementierung und änderte seine Logik ein bisschen um auch die Übersetzung zu enthalten. Aber nichts "out of the box" konnte das Problem lösen. –

+0

ok, werde ich versuchen. Dank –

Antwort

0

Vielleicht ist es hilfreich für jemanden, ich habe eine Lösung gefunden.

Erstens habe ich versucht, Übersetzen Sie die Animation ohne Glück. Aber dann habe ich gerade eine neue Klasse erweitert. Überschreibe dann getItemOffsets() und setze den richtigen Offset auf Rect. LayoutManager berechnet diese Offsets erfolgreich. Erreichtes Ergebnis ist auf dem angehängten Bild.

+0

gut, nicht sicher, ob seine gonna Arbeit in meinem Fall, da Im auf jedem Frame Übersetzung ändern. Ich weiß nicht, was es bedeutet, die Dekoration so oft zu verändern. –