ViewPager Android-Afficher l'aperçu de la page à gauche et à droite

J'utilise le ViewPager D'Android . Ce que je veux faire est de montrer un aperçu de la page sur la gauche et la droite. J'ai vu où je peux utiliser un négatif pageMargin pour afficher un aperçu du côté droit.

setPageMargin(-100);

est-il de toute façon que je peux montrer un aperçu du côté gauche aswell? C'est fondamentalement quelque chose de similaire au widget gallery que je cherche.

76
demandé sur Macarse 2012-04-11 03:47:30

5 réponses

pour afficher l'aperçu des pages de gauche et de droite définir les deux valeurs suivantes

  1. viewpager.setClipToPadding(false);
  2. viewpager.setPadding(left,0,right,0);

si vous avez besoin d'espace entre deux pages dans le viewpager alors ajouter

viewpager.setPageMargin(int);
166
répondu Jiju Induchoodan 2016-02-06 06:13:21

la réponse de @JijuInduchoodan est parfaite et efficace. Cependant, comme je suis relativement nouveau à Android, il m'a fallu un certain temps pour comprendre et régler correctement. Donc, je poste cette réponse pour référence future et aider toute autre personne qui est dans les mêmes chaussures que moi.

if (viewPager == null) 
        {

            // Initializing view pager
            viewPager = (ViewPager) findViewById(R.id.vpLookBook);

            // Disable clip to padding
            viewPager.setClipToPadding(false);
            // set padding manually, the more you set the padding the more you see of prev & next page
            viewPager.setPadding(40, 0, 40, 0);
            // sets a margin b/w individual pages to ensure that there is a gap b/w them
            viewPager.setPageMargin(20);
        }

il n'est pas nécessaire de régler la largeur de la page ViewPager's de l'adaptateur. Aucun code supplémentaire n'est requis pour voir la page précédente et la page suivante dans ViewPager . Toutefois, si vous voulez ajouter de la vierge espace en haut et en bas de chaque page, vous pouvez définir le code suivant à ViewPager's la disposition des parents de la page de l'enfant.

android:paddingTop="20dp"
android:paddingBottom="20dp"

Final ViewPager

ce sera le dernier regard du ViewPager.

53
répondu Rohan Kandwal 2015-12-11 06:58:25

en 2017 un tel comportement en plus peut être facilement atteint en utilisant RecyclerView avec Pageresnaphelper (ajouté dans la version 25.1.0 de V7 bibliothèque de soutien): 

enter image description here

il y a quelque temps, j'ai eu besoin de cette fonctionnalité de type viewpager et j'ai préparé une petite bibliothèque:

MetalRecyclerPagerView - vous pouvez trouver tout le code avec exemples là.

se compose principalement d'un seul fichier de classe: MetalRecyclerViewPager.java (et deux xmls: attrs.xml et ids.xml ).

Espère que cela aide quelqu'un et vous permettra d'économiser quelques heures :)

19
répondu Alexander Bilchuk 2017-08-09 19:37:42

si quelqu'un cherche toujours une solution, j'ai personnalisé la page de vue pour la réaliser sans utiliser de marge négative, trouver un exemple de projet ici https://github.com/44kksharma/Android-ViewPager-Carousel-UI il devrait fonctionner dans la plupart des cas, mais vous pouvez encore définir la marge de page avec mPager.setPageMargin(margin in pixel);

4
répondu 44kksharma 2018-02-23 11:44:24

Utilisez cet adaptateur de fragment et cette classe pour afficher le viewpager dans le défilement gauche et droit.ajouter les classes nécessaires pour faire défiler pour voir les pages suivantes.

package com.rmn.viewpager;

import java.util.List;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

/**
 * The <code>PagerAdapter</code> serves the fragments when paging.
 * @author mwho
 */
public class PagerAdapter extends FragmentPagerAdapter {

    private List<Fragment> fragments;
    /**
     * @param fm
     * @param fragments
     */
    public PagerAdapter(FragmentManager fm, List<Fragment> fragments) {
        super(fm);
        this.fragments = fragments;
    }
    /* (non-Javadoc)
     * @see android.support.v4.app.FragmentPagerAdapter#getItem(int)
     */
    @Override
    public Fragment getItem(int position) {
        return this.fragments.get(position);
    }

    /* (non-Javadoc)
     * @see android.support.v4.view.PagerAdapter#getCount()
     */
    @Override
    public int getCount() {
        return this.fragments.size();
    }
}



package com.manishkpr.viewpager;


import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class ViewPagerAdapter extends FragmentPagerAdapter {
    private Context _context;

    public ViewPagerAdapter(Context context, FragmentManager fm) {
        super(fm);  
        _context=context;

        }
    @Override
    public Fragment getItem(int position) {
        Fragment f = new Fragment();
        switch(position){
        case 0:
            f=LayoutOne.newInstance(_context);  
            break;
        case 1:
            f=LayoutTwo.newInstance(_context);  
            break;
        }
        return f;
    }
    @Override
    public int getCount() {
        return 2;
    }

}
-7
répondu Veerababu Medisetti 2012-11-05 07:29:38