J'utilise android.support.v4.widget.superefreshlayout code> avec
android.support.v7.widget.recyClerview code>.
Sur Fragment View Creation, j'ai besoin d'afficher SwipeefreshLayout Code> Animation. Mais quand j'appelle
setrefreshing (true) code> 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 code>.
Comment montrer cette animation dans la meilleure façon? P>
5 Réponses :
SwipereFreshLayout doit contenir un enfant pour fonctionner correctement. Assurez-vous de l'initialiser avant de l'utiliser n'importe où! P>
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 p>
La solution plus efficace du code consiste à utiliser la spinner existante, mais vous devez faire attention à réinitialiser sa position p>
Si vous devez calculer la densité de pixels, vous pouvez l'attraper à partir de: p>
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);
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 code> avant de définir la mise en page Manager dans
recyclerview code>.
Ceci est un bogue signalé (rapporté ici ) et une solution de contournement est disponible:
Vous devez appeler Donc, dans l'activité, vous pouvez le faire dans < Code> Oncreate () code>, comme celui-ci: p> en fragment, vous pouvez mettre ces codes dans setrefroShing (true) code> après
ONDRAW () code>, sinon ce ne serait pas afficher d'animation.
OnActivityCared () Code>. p> p>