2011-09-08 2 views
49

Android Market/Google Music sembrano essere in grado di avere un intervallo di qualche tipo tra i diversi frammenti contenuti nello ViewPager.Padding/margine Android ViewPager tra i frammenti di pagina

Qualche idea su come è fatto? L'aggiunta di margini/riempimento alla vista del frammento reale non funziona, poiché la vista deve ancora occupare l'intera larghezza dello schermo. Il 'gap' è visibile solo quando si fa scorrere il ViewPager.

risposta

100

In Support Package, r4 è possibile utilizzare questi metodi:

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

in ViewPager classe.

Non so perché questo non ha equivalente in XML :-(

Se è necessario utilizzare unità tuffo è possibile utilizzare questo metodo:

public static int convertDip2Pixels(Context context, int dip) { 
    return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, context.getResources().getDisplayMetrics()); 
} 
+13

per DP alla conversione px, preferisco le Context.getResources puliti metodo(). GetDimensionPixelOffset (int dimenId). – greg7gkb

+0

ottenere la risorsa non trovata durante l'esecuzione di Context.getResources(). GetDimensionPixelOffset (int dimenId). L'ID della dimensione è corretto ma non funziona. – jonney

+0

utilizza il riferimento dell'adattatore anziché il contesto –

14

sperando che questo potrebbe aiutare qualcuno con un ViewPager e margini di pagina.

volevo avere un ViewPager è un CardView e ha avuto problemi con il Paddi ng e il margine tra le pagine di viewpager. Il setPageMargin non ha funzionato affatto per me. Ho dovuto usare quanto segue:

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

Ciò consente alle pagine di essere molto vicine tra loro.

Example of the viewpager with a small margin between the pages.

1

pager.setClipToPadding (false); pager.setPadding (sinistra, 0, destra, 0); Se hai bisogno di spazio tra due pagine nel viewpager, aggiungi pager.setPageMargin (int);

0

Prova 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); 
2
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)); 
} 
0

Prova questa

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