material-components / material-components/material-components-android

[MaterialContainerTransform] RecyclerView content is gone during transition when LinearLayoutManager.recycleChildrenOnDetach = true

Offen
#2,006 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug Feature: Transition
Vorherrschende Sprache
Java
Sterne
17.4k
Forks
3.2k
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Description: I'm using MaterialContainerTransform in a fragment transition.

I see that RecyclerView#onDetachedFromWindow() gets called immediately as soon as the transition starts unlike onDestroyView() that waits for the transition to end. For performance improvement, I'm setting LinearLayoutManager#recycleChildrenOnDetach to true. This flag makes LinearLayoutManager#onDetachedFromWindow() clear the views in the RecyclerView causing the screen to turn blank when the transition starts. (ref)

The real issue is that RecyclerView#onDetachedFromWindow() doesn't wait for the transition to complete. In a regular fragment transition without MaterialContainerTransform, this method gets called only after the transition is completed.

Source code: https://github.com/mkano9/material-container-transform-recycleChildrenOnDetach/tree/master
See FirstFragment

Video: https://user-images.githubusercontent.com/57272551/105796603-0c143d80-5f44-11eb-994b-a2dc8196cdd2.mp4

Android API version: 30

Material Library version: 1.3.0-rc01

Device: Pixel 3 XL

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, das verlinkte Reproduktionsprojekt auszuführen und app/src/main/java/com/example/materialcontainertransformplayground/FirstFragment.kt im Umfeld des gemeldeten Übergangs zu lesen. Verfolge den MaterialContainerTransform-Fragmentübergang zusammen mit RecyclerView#onDetachedFromWindow() und LinearLayoutManager#recycleChildrenOnDetach; abgeschlossen ist die Aufgabe, wenn der Inhalt von RecyclerView während des gesamten Übergangs bei aktiviertem Flag sichtbar bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
android, kotlin
Bereich
mobile
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
28/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.