2011-09-08 114 views
49

Android Market/Google Music似乎能够在ViewPager中包含的不同片段之间存在某种差距。Android ViewPager填充/页片段之间的边距

任何想法如何完成?将边距/填充添加到实际的片段视图不起作用,因为视图仍然需要占据屏幕的整个宽度。只有滑动ViewPager时才能看到'间隙'。

回答

100

Support Package, r4您可以使用这些方法:

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

ViewPager类。

我不知道为什么,这并不在XML相当于:-(

如果需要使用浸单元,你可以使用这个方法:

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

用于DP到像素转换,我更喜欢吸尘器Context.getResources()。getDimensionPixelOffset(INT dimenId)方法。 – greg7gkb

+0

执行Context.getResources()。getDimensionPixelOffset(int dimenId)时未找到资源。 teh尺寸的ID是正确的,但它不起作用 – jonney

+0

使用适配器引用而不是上下文 –

14

希望这可以帮助某人一个ViewPager和页边距。

我想有一个ViewPagerCardView并与paddi有问题ng和viewpager页面之间的边距。 setPageMargin根本不适用于我。我必须使用以下内容:

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

这样可以使页面非常接近。

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

1

pager.setClipToPadding(假); pager.setPadding(left,0,right,0); 如果您在viewpager中的两个页面之间需要空格,然后添加 pager.setPageMargin(int);

0

试试这个。

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

尝试此

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