8
votes

SwipereFreshLayout Aucune animation sur la création de fragments

J'utilise android.support.v4.widget.superefreshlayout avec android.support.v7.widget.recyClerview .
Sur Fragment View Creation, j'ai besoin d'afficher SwipeefreshLayout Animation. Mais quand j'appelle setrefreshing (true) rien ne se produit. Mais quand je rafraîchis les changements d'animation de données.
Je suppose que l'animation ne montre pas sans enfant à l'intérieur SwipeefreshLayout .
Comment montrer cette animation dans la meilleure façon?


0 commentaires

5 Réponses :


1
votes

SwipereFreshLayout doit contenir un enfant pour fonctionner correctement. Assurez-vous de l'initialiser avant de l'utiliser n'importe où!


0 commentaires

2
votes

Cela dépend de quel niveau de l'API que vous construisez sous - si vous utilisez jusqu'à API 20, vous pouvez simplement activer SETREFRESHING (true), cela exécutera l'animation dans la barre d'action, mais dans API 21 (matériel Conception) Ils ont changé les progrès pour être un spinner que "tiré sur la vue" avant de tourner

Vous avez 2 façons de me déplacer dans API 21: 1) Déplacez la centrifuge avec setProgressViewOffset (), mais n'oubliez pas de la remettre en arrière de la remise en arrière (notez que cela fonctionne dans PX, tandis que SetDistanceTotriggersync () utilise DP) 2) Faites une fileuse en double affichée lorsque vous chargez les données

La solution plus efficace du code consiste à utiliser la spinner existante, mais vous devez faire attention à réinitialiser sa position

Si vous devez calculer la densité de pixels, vous pouvez l'attraper à partir de: xxx


0 commentaires

2
votes

Merci, gars.

J'ai juste compris que la solution la plus simple consiste à appeler la mesure de la méthode (int, int) avec des valeurs non nulles) avant d'appeler la libraxie (vrai). Le problème se produit parce que Sétrefreshing (vrai) appelle avant OnMeasure. P>

Vous devez donc appeler: P>

swipeRefreshLayout.measure(initialWidth, initialHeight);
swipeRefreshLayout.setRefreshing(true);


5 commentaires

C'est une mauvaise façon de le faire parce que vous rencontrerez divers NPES.


@ Tadasšubonis Pouvez-vous expliquer ce que NPE vous obtiendriez de cela? Je ne vois pas le problème?


Aussi @Maksym qu'est-ce que vous avez utilisé pour les valeurs sur mesure?


Dans mon cas, il (SwiperefreshLayout) contenait un recyclerview et sur appeler .Measure (), il propocue à Recyclerview Internals, puis une NPE serait lancée. Vous n'avez pas une pile disponible à la main maintenant ...


@ Tadasšubonis Peut-être que vous appelez Mesure avant de définir la mise en page Manager dans recyclerview .



10
votes

Ceci est un bogue signalé (rapporté ici ) et une solution de contournement est disponible: xxx


0 commentaires

0
votes

Vous devez appeler setrefroShing (true) après ONDRAW () , sinon ce ne serait pas afficher d'animation.

Donc, dans l'activité, vous pouvez le faire dans < Code> Oncreate () , comme celui-ci: xxx

en fragment, vous pouvez mettre ces codes dans OnActivityCared () .


0 commentaires