Lorsque vous utilisez un SwipeRefreshLayout en combinaison avec un ActionBar en mode superposition, l'animation de chargement sera affichée derrière la barre d'action, la rendant presque invisible.
Puis-je faire quelque chose pour l'afficher en haut de la barre d'actions?
Dans la version Material Design de la bibliothèque appcompat-v7 (v21.0.0), SwipeRefreshLayout
obtient une méthode pour définir le décalage de la vue de progression.
public void setProgressViewOffset (échelle booléenne, int start, int end)
La position de départ et de repos de l'indicateur d'actualisation est toujours positionnée près du haut du contenu rafraîchissant. Cette position est un emplacement cohérent, mais peut être ajustée dans les deux sens en fonction de la présence ou non d'une barre d'outils ou d'une barre d'action.
Paramètres
scale Défini sur true s'il n'y a pas de vue à un ordre z supérieur à celui où le spinner de progression doit apparaître.
start Décalage en pixels à partir du haut de cette vue auquel le curseur de progression doit apparaître.
fin Décalage en pixels à partir du haut de cette vue auquel le spinner de progression devrait s'arrêter après un mouvement de balayage réussi.
Essayez ce code:
int top_to_padding=100;
swipe_refresh_layout.setProgressViewOffset(false, 0,top_to_padding);
J'espère que son travail pour vous.
la réponse de Vijay Rajput fonctionne pour moi, mais le problème était uniquement sur KitKat ou hight donc j'ai inclus:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KitKat) { swipeLayout.setProgressViewOffset(false, 0,100); }
Au lieu de définir paddingTop sur SwipeRefreshLayout, la définition de layout_marginTop rendra la barre de progression visible:
<Android.support.v4.widget.SwipeRefreshLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_marginTop="?android:attr/actionBarSize">
Je suis actuellement tombé sur ce problème lorsque j'ai mis à niveau ma dépendance d'Appcompat 19.1.0 à 21.0.0 et que je n'ai apporté aucune modification au code.
Il s'agit en fait d'un problème connu avec SwipeRefreshLayout dans appcompat 21.0.0.
Recherchez ici une solution de contournement: https://code.google.com/p/Android/issues/detail?id=77712
[~ # ~] modifier [~ # ~]
C'était la meilleure solution avant la version 21 de la bibliothèque appcompat-v7. Si vous utilisez la version 21 ou plus récente, veuillez vérifier la réponse approuvée. Si vous utilisez l'API appcompat-v7 <21, cela vous sera toujours utile.
Vous pouvez résoudre ce problème facilement en copiant le SwipeRefreshLayout (et ses dépendances) dans votre projet et en modifiant l'emplacement d'affichage de la barre de progression, en ajoutant une marge supérieure.
Pour le rendre facile pour tout le monde, j'ai publié une bibliothèque avec la marge implémentée. Jetez un oeil à cela: https://github.com/Naroh091/SwipeRefreshLayoutOverlay
J'espère que ça aide!