2016-11-13 60 views
5

już wdrożył „strona peek” funkcji dla mojego ViewPager:ViewPager: ustawić inny dopełnienie dla pierwszej i ostatniej strony

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

Robi to jestem w stanie zobaczyć część poprzedniej i następnej strony. Ale pierwsza i ostatnia strona pokazują większą białą przestrzeń, ponieważ nie ma drugiej strony w tym kierunku do pokazania.

Jak ustawić różne wypełnienia dla pierwszej i ostatniej strony?

+0

nie znalazłem bezpośredniej poprawkę do swojego problemu, ale można zastąpić 'getPageWidth' w' FragmentPagerAdapter' i powrócić 0.9f, widok będzie 90% 'szerokości ViewPager' za, ale pokazuje tylko następną stronę (nie poprzednią), z wyjątkiem ostatniej strony. – MohanadMohie

+0

Niestety, muszę pokazać obie strony, gdy są dostępne ... – Alessandro

+0

Jak to zrobiłeś? –

Odpowiedz

7

Musiałem rozwiązać ten sam problem i rozwiązałem go, ustawiając niestandardowy PageTransformer. Praktycznie przerzucam strony na pierwszą i ostatnią pozycję. Daj mi znać, jeśli to działa dla Ciebie.

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

to jest dobre rozwiązanie! –