2011-09-08 38 views
49

Android Market/Google Âm nhạc dường như có thể có khoảng cách giữa một số phân đoạn khác nhau được chứa trong số ViewPager.Android ViewPager đệm/lề giữa các đoạn trang

Bất kỳ ý tưởng nào về cách thực hiện điều này? Việc thêm lề/đệm vào khung nhìn phân đoạn thực tế không hoạt động, bởi vì khung nhìn vẫn cần chiếm toàn bộ chiều rộng của màn hình. 'Khoảng cách' chỉ hiển thị khi vuốt ViewPager.

Trả lời

100

Trong Support Package, r4 bạn có thể sử dụng các phương pháp:

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

trong ViewPager lớp.

Tôi không biết tại sao điều này không có tương đương trong XML :-(

Nếu bạn cần sử dụng đơn vị nhúng bạn có thể sử dụng phương pháp này:

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

Đối với dp để chuyển đổi px, tôi thích Context.getResources sạch() phương pháp. GetDimensionPixelOffset (int dimenId). – greg7gkb

+0

không tìm thấy tài nguyên khi thực thi Context.getResources(). GetDimensionPixelOffset (int dimenId). ID của thứ nguyên là chính xác nhưng không hoạt động – jonney

+0

sử dụng tham chiếu bộ điều hợp thay cho Ngữ cảnh –

14

Hy vọng điều này có thể giúp đỡ người khác với một ViewPager và trang lề.

tôi muốn có một ViewPager là một CardView và có vấn đề với PADDI và lề giữa các trang viewpager. SetPageMargin đã không làm việc cho tôi cả. Tôi phải sử dụng những điều sau đây:

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

Điều này cho phép các trang rất gần nhau.

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

1

pager.setClipToPadding (false); pager.setPadding (trái, 0, phải, 0); Nếu bạn cần khoảng trống giữa hai trang trong chế độ xem thì hãy thêm pager.setPageMargin (int);

0

Hãy thử tính năng này.

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

Hãy thử điều này

viewPager.setClipToPadding(false); 
    viewPager.setOffscreenPageLimit(2); 
    viewPager.setPadding(20, 0, 20, 0); 
Các vấn đề liên quan