Ich verwende android.support.v4.widget.SwipeRefreshLayout
mit android.support.v7.widget.RecyclerView
.
Bei der Erstellung der Fragmentansicht muss SwipeRefreshLayout
animation angezeigt werden. Aber wenn ich setRefreshing(true)
anrufe, passiert nichts. Aber wenn ich Datenanimationsänderungen aktualisiere.
Ich nehme an, dass die Animation nicht ohne Kind in SwipeRefreshLayout
angezeigt wird.
Wie man diese Animation am besten zeigt?
Danke, Leute.
Ich habe gerade festgestellt, dass die einfachste Methode darin besteht, die Methode measure (int, int) vor dem Aufruf von setRefreshing (true) mit Werten ungleich Null aufzurufen. Das Problem tritt auf, weil setRefreshing (true) vor onMeasure aufruft.
Sie müssen also anrufen:
%Vor%Dies ist ein gemeldeter Fehler (gemeldet hier ) und eine Problemumgehung ist verfügbar:
%Vor%Das hängt davon ab, auf welcher API-Ebene Sie bauen - wenn Sie bis API 20 verwenden, können Sie setRefreshing (true) einfach einschalten, damit wird die Animation in der ActionBar, aber in API 21 (Material Design) änderten sie den Fortschritt, um ein Spinner zu sein, als "in Sicht gezogen" wird, bevor es spinnt
Sie haben zwei Möglichkeiten, dies in API 21 zu umgehen: 1) verschiebe den Spinner mit setProgressViewOffset () nach unten, aber vergiss nicht, ihn später wieder zu aktivieren (beachte, dass dies in px funktioniert, während setDistanceToTriggerSync () dp verwendet) 2) Machen Sie einen doppelten Spinner, der angezeigt wird, wenn Sie die Daten laden
Die Code-effizientere Lösung besteht darin, den vorhandenen Spinner zu verwenden, aber Sie müssen darauf achten, dass Sie seine Position zurücksetzen
Wenn Sie die Pixeldichte berechnen müssen, können Sie sie von:
abrufen %Vor%Tags und Links android animation android-recyclerview swiperefreshlayout