Android ViewPager imbottitura/margine tra frammenti pagina

Android Market/Google Music sembra essere in grado di avere un gap di qualche tipo tra i diversi frammenti che sono contenute nel ViewPager.

Qualsiasi idea di come è fatto? L’aggiunta di margin/padding per l’effettivo frammento di vista non funziona, perché la vista ancora deve occupare l’intera larghezza dello schermo. Il ‘gap’ è visibile solo quando si è passato il ViewPager.

InformationsquelleAutor psychotik | 2011-09-08

 

7 Replies
  1. 118

    In Pacchetto di supporto, r4 è possibile utilizzare questi metodi:

    setPageMargin(int marginPixels)
    setPageMarginDrawable(Drawable)
    setPageMarginDrawable(int)

    in ViewPager classe.

    Non so perché questo non ha equivalente nella XML 🙁

    Se avete bisogno di utilizzare dip unità è possibile utilizzare questo metodo:

    public static int convertDip2Pixels(Context context, int dip) {
        return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, context.getResources().getDisplayMetrics());
    }
    • Per dp px conversione, io preferisco il pulitore Contesto.getResources().getDimensionPixelOffset(int dimenId) metodo.
    • ottenere risorsa non trovato durante l’esecuzione di Contesto.getResources().getDimensionPixelOffset(int dimenId). L’ID di teh dimensione è corretta, ma non funziona
    • utilizzare l’adattatore di riferimento invece di Contesto
    • setPageMargin(int marginPixels) è, grazie.
  2. 22

    Sperando che questo possa aiutare qualcuno con un ViewPager e i margini della pagina.

    Volevo avere un ViewPager è un CardView e aveva problemi con l’imbottitura e il margine tra il viewpager pagine. Il setPageMargin non ha funzionato per me. Ho dovuto usare i seguenti:

    int pagerPadding = 16;
    pager.setClipToPadding(false);
    pager.setPadding(pagerPadding, 0, pagerPadding, 0);

    Questo permette alle pagine di essere molto vicini tra loro.

    Android ViewPager imbottitura/margine tra frammenti pagina

  3. 4
      viewPager.setPageMargin(dpToPx(10)); 
      //replace 10 with the value you want for margin in dp. 
    
    
     public int dpToPx(int dp) {
        DisplayMetrics displayMetrics = getActivity().getResources().getDisplayMetrics();
        return Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
     }
  4. 2

    Provare Questo .

        ViewPager viewPager = (ViewPager) findViewById(R.id.h_view_pager);
        viewPager.setClipToPadding(false);
        viewPager.setPadding(60, 0, 60, 0);
        viewPager.setPageMargin(20);
        ImagePagerAdapter adapter = new ImagePagerAdapter();
        viewPager.setOffscreenPageLimit(adapter.getCount());
        viewPager.setAdapter(adapter);
  5. 1

    cercapersone.setClipToPadding(false);
    cercapersone.setPadding(a sinistra,0,destro 0);
    Se avete bisogno di spazio tra due pagine il viewpager quindi aggiungere
    cercapersone.setPageMargin(int);

  6. 0

    Provare questo

        viewPager.setClipToPadding(false);
        viewPager.setOffscreenPageLimit(2);
        viewPager.setPadding(20, 0, 20, 0);
  7. 0

    qui è un esempio di soluzione :

    implementare il ViewPager.OnPageChangeListener nella vostra attività o il vostro frammento in cui si utilizza il ViewPager

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            int tabStripChildCount = mTabStrip.getChildCount();
    
            for (int i=0 ; i < tabStripChildCount ; i++){
                View view = mTabStrip.getChildAt(i);
    
                ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
                p.setMargins(0, 0, 50, 0);
                view.requestLayout();
    
        }

    mTabStrip è il layout di tabella nella vostra attività o il frammento

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    
        mSectionsPagerAdapter = new SectionsPagerAdapter(getChildFragmentManager());
        View view =  inflater.inflate(R.layout.patient_activity__fragment_tab_viewer, container, false);
    
        mViewPager = (ViewPager) view.findViewById(R.id.viewPager); 
        mViewPager.setAdapter(mSectionsPagerAdapter);
    
        mTabStrip = (SlidingTabLayout) view.findViewById(R.id.tabs);
    
        mTabStrip.setViewPager(mViewPager);
        return view;
    }

    infine si avrà un margine tra il titolo frammenti

Lascia un commento