2011-09-08 63 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);