Limite de page hors fenêtre de ViewPager

Existe-t-il un moyen de contourner le comportement normal de ViewPager et sa limite de page hors écran ? Mon ViewPager contient quatre fragments , chacun contenant une vue en gridview des images. Le problème que je pose est que, lors de l' ViewPager du ViewPager , deux fragments sont créés, ce qui se traduit par l'émission d'une vingtaine d'images (environ 10 par fragment). Est-il possible de désactiver la limite de la page hors écran?

Mon objectif est de ne télécharger que des images lorsqu'un fragment est sélectionné, ou seulement lorsque l'utilisateur plante l'image. Une façon d'y parvenir est d'utiliser l'auditeur onPageSelected et de définir un drapeau qui indique à GridViewAdapter s'il est autorisé à télécharger l'image ou non.

  • Flaky Android Espresso Test - Snackbar
  • Pourquoi ContentObserver est-il appelé plusieurs fois?
  • Carte de crédit pour Google Play test
  • Android: désactivez la sélection de texte dans une vue web
  • Cordova Error sur Build Only pour Android: com.android.dex.DexException: plusieurs fichiers dex définissent Landroid / support / annotation / AnimRes;
  • La méthode onCreateView s'appelle quand? Et Combien de fois dans le cycle de vie des activités?
  • Une deuxième façon dont je peux penser est de configurer un HoverListener sur HoverListener , et de télécharger l'image sur onHover , mais cet auditeur n'est disponible qu'en 4.0 et plus tard.

    Existe-t-il une meilleure façon d'y parvenir?

  • Pourquoi mon application demande-t-elle une autorisation d'identification du téléphone?
  • Réagir natif et Android?
  • Modification automatique des emulateurs Android
  • Implémentation d'un pool de threads dans un service
  • Obtenir une propriété inconnue 'classpath' avec le compilateur Jack pour Android
  • ORMLite réinitialise toutes les tables
  • 6 Solutions collect form web for “Limite de page hors fenêtre de ViewPager”

    Est-il possible de désactiver la limite de la page hors écran?

    Non. Il est déjà défini sur la valeur minimale possible: une page de chaque côté de la page affichée. Ceci est nécessaire pour que les effets d'animation fonctionnent – vous voyez des parties de deux fragments (original et nouveau) en même temps.

    Mon objectif est de ne télécharger que des images lorsqu'un fragment est sélectionné, ou seulement lorsque l'utilisateur plante l'image.

    Ensuite, chargez votre grille avec des images placeholder et ne chargez pas les images réelles jusqu'à ce que la page soit modifiée.

    Aussi, notez que "hover" implique une sorte de souris ou un autre type de pointeur, qui n'est pas utilisé sur la plupart des appareils Android.

    Il suffit de définir la limite hors écran à un.

     ViewPager mViewpager = (ViewPager)findView.... mViewPager.setOffscreenPageLimit(1); 

    Gérer viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener()

    À l'intérieur, retirez les vues supplémentaires après la position + 1 et avant la position - 1 utilisant viewPager.removeViewAt(int) (c.-à-d. Limiter le pager pour avoir seulement 3 pages chargées: courant, précédent et suivant.

    Ensuite, vous devez gérer destroyItem dans l'adaptateur viewpager, recycle() les bitmaps dans la vue détruite.

     @Override public void destroyItem(ViewGroup container, int position, Object object) { LinearLayout layout = (LinearLayout) object; ((ViewPager) container).removeView(layout); ImageView imgDisplay = (ImageView) layout.findViewById(R.id.quranPage); Drawable drawable = imgDisplay.getDrawable(); if (drawable instanceof BitmapDrawable) { BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; Bitmap bitmap = bitmapDrawable.getBitmap(); if (bitmap != null) //when reading page fails, this will be null bitmap.recycle(); } } 

    Vous pouvez également le faire en xml en utilisant la liaison de données Android:

     <android.support.v4.view.ViewPager [...] app:offscreenPageLimit="@{1}" [...] </android.support.v4.view.ViewPager> 

    Mon objectif est de ne télécharger que des images lorsqu'un fragment est sélectionné

    Vous pouvez utiliser le setUserVisibleHint(boolean isVisibleToUser) du Fragment dans votre ViewPager.

    mViewPager.setOffscreenPageLimit(1); Ne donnera pas ce que vous voulez, il va charger un fragment voisin s'il ne le charge pas déjà (cela signifie qu'il va charger un fragment 2).

    Disons si vous souhaitez charger tout votre fragment (fragment 4) à la fois, utilisez uniquement setOffscreenPageLimit(3) , sinon utilisez la fonction setOffscreenPageLimit .

    Je pense que vous ne pouvez pas modifier le comportement par défaut du fragment de chargement du voisin de visualisation.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.