2016-11-13 20 views
5

tôi đã thực hiện một "trang ú" tính năng cho ViewPager tôi:ViewPager: thiết lập một lớp đệm khác nhau cho đầu tiên và cuối cùng trang

mPager.setClipToPadding(false); 
mPager.setPadding(120, 0, 120, 0); 
mPager.setPageMargin(60); 

Việc làm này tôi có thể xem một phần của trang trước và sau. Nhưng trang đầu tiên và cuối cùng hiển thị một khoảng trắng lớn hơn vì không có trang nào khác theo hướng này để hiển thị.

Làm cách nào để đặt một lớp đệm khác cho trang đầu tiên và trang cuối cùng?

+0

Tôi chưa tìm thấy bản sửa lỗi trực tiếp cho vấn đề của bạn, nhưng bạn có thể ghi đè 'getPageWidth' trong' FragmentPagerAdapter' và trả về 0.9f, chế độ xem sẽ bằng 90% chiều rộng 'ViewPager', nhưng nó chỉ hiển thị trang tiếp theo (không phải trang trước) ngoại trừ ở trang cuối cùng. – MohanadMohie

+0

Rất tiếc, tôi cần hiển thị cả hai trang khi có sẵn ... – Alessandro

+0

Bạn đã làm như thế nào? –

Trả lời

7

Tôi đã phải giải quyết cùng một vấn đề và tôi đã giải quyết nó bằng cách đặt tùy chỉnh PageTransformer. Tôi thực sự traslate các trang khi ở vị trí đầu tiên và cuối cùng. Hãy cho tôi biết, nếu việc này giúp ích cho bạn.

mPager.setClipToPadding(false); 
mPager.setPadding(120, 0, 120, 0); 
mPager.setPageMargin(60);  
mPager.setPageTransformer(false, new ViewPager.PageTransformer() { 
     @Override public void transformPage(View page, float position) { 
      if (mPager.getCurrentItem() == 0) { 
       page.setTranslationX(-120); 
      } else if (mPager.getCurrentItem() == adapter.getCount() - 1) { 
       page.setTranslationX(120); 
      } else { 
       page.setTranslationX(0); 
      } 
     } 
    }); 
+0

đây là giải pháp tốt! –

Các vấn đề liên quan