2011-09-08 17 views
49

Android Market/Google Music parece ser capaz de tener un espacio de algún tipo entre los diferentes fragmentos que están contenidos en el ViewPager.Android ViewPager relleno/margen entre fragmentos de página

¿Alguna idea de cómo se hace esto? Agregar margen/relleno a la vista de fragmento real no funciona, porque la vista todavía necesita ocupar todo el ancho de la pantalla. El 'espacio' solo es visible al deslizar el ViewPager.

Respuesta

100

En Support Package, r4 puede utilizar estos métodos:

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

en ViewPager clase.

No sé por qué esto no tiene equivalente en XML :-(

Si necesita utilizar la unidad de inmersión puede utilizar este método:

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

para DP a la conversión px, prefiero los más limpios Context.getResources método(). GetDimensionPixelOffset (int dimenId). – greg7gkb

+0

obteniendo recurso no encontrado al ejecutar Context.getResources(). GetDimensionPixelOffset (int dimenId). El ID de la dimensión es correcta pero no funciona – jonney

+0

use la referencia del adaptador en lugar del contexto –

14

Con la esperanza de que esto podría ayudar a alguien con un ViewPager y márgenes de página.

quería tener un ViewPager es un CardView y tenía problemas con el paddi ng y el margen entre las páginas de viewpager. El setPageMargin no funcionó para mí en absoluto. Tuve que usar lo siguiente:

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

Esto permite que las páginas estén muy juntas.

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

1

pager.setClipToPadding (false); pager.setPadding (izquierda, 0, derecha, 0); Si necesita espacio entre dos páginas en el visor, agregue pager.setPageMargin (int);

0

Pruebe esto.

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

probar este

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