une - Android-défilement horizontal de plusieurs éléments visibles




tag android studio (5)

Celui-ci a une réponse étonnamment facile, je ne sais même pas pourquoi il n'a pas été posté tout de suite. Tout ce que je devais faire pour obtenir l'effet exact était de redéfinir la méthode PagerAdapter#getPageWidth . Par défaut, il renvoie 1, mais si vous le définissez sur 0.5, vous obtiendrez 2 pages, 0.33, 3, etc. Selon la largeur du séparateur, vous devrez peut-être réduire légèrement la valeur.

Voir l'extrait suivant:

    @Override
    public float getPageWidth(final int position) {
        // this will have 3 pages in a single view
        return 0.32f;
    }

https://code.i-harness.com

EDIT: Voir ma propre réponse pour une solution facile

IMPORTANT : Bounty est offert comme moyen clair de modifier ViewPager pour répondre au scénario décrit ci-dessous. Veuillez ne pas offrir HorizontalScrollView - J'ai besoin d'un scénario de cycle de vie de fragment complet couvert

Je dois implémenter le défilement horizontal des vues basées sur les Fragments dans lequel un élément est au centre et les éléments situés à droite / à gauche sont partiellement ou totalement visibles. ViewPager est mal adapté à la tâche car il se concentre sur l'affichage d'un élément à la fois.

Pour faciliter la compréhension, vous trouverez ci-dessous un rapide croquis dans lequel les éléments 1, 5 et 6 sont en dehors de la zone visible. Et et si vous voulez que ce nombre visualisable soit configurable, par exemple, en vue portrait, je ne montrerai que 2 éléments (ou éventuellement un seul).

Je n'essaie pas d'ajuster, disons, 3 éléments à l'écran, tant que l'élément central est affiché, les autres peuvent être recadrés. Sur le petit écran, il est correct d’avoir un élément central. À mesure que la taille de l’écran grandit, plusieurs éléments (rogné est OK) doivent être affichés

Je comprends que cela ressemble à une galerie, mais là encore, les éléments ne sont pas de simples images, mais des Fragments avec une liste à défilement vertical dans chaque fragment.

Post-scriptum a trouvé cet article de blog par @Commonsware qui répertorie 3 approches différentes . Pour mon besoin j'aime # 3


En plus de la deuxième réponse de MrZander, jetez un coup d'œil à cette https://.com/a/2655740/935075


Nous faisons quelque chose de très similaire à ce que vous décrivez en utilisant une Gallery avec des Fragments et un adaptateur de galerie étendant l'adaptateur de BaseAdapter . Je vous recommande d’aller avec une galerie pour atteindre votre objectif (nous utilisons également un ViewPager pour la vue où nous n’avons pas besoin de voir les autres fragments).


Si vous souhaitez étendre ViewPager, substituez simplement la méthode de dessin et setOffscreenPageLimit (int limit). Mais, je recommande d’utiliser FragmentPageAdapter si vos fragments eux-mêmes sont assez complexes.

Vous pouvez vérifier le code source here ou si vous voulez vérifier celui du package de support, vous pouvez le faire here .


Découvrez ce billet de blog sur la manière d'écrire une vue de défilement horizontal personnalisée pour obtenir quelque chose de similaire. L'exemple n'a qu'un seul écran visible à la fois, mais vous devriez pouvoir le modifier facilement pour répondre à vos besoins.







android-viewpager