2016-11-13 7 views
5

я уже внедрил «страница быстрого взгляд» особенность моего ViewPager:ViewPager: установить различные отступы для первой и последней страницы

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

Делая это, я могу просмотреть часть предыдущей и следующей страницы. Но первая и последняя страница показывают большее пустое пространство, потому что в этом направлении нет другой страницы.

Как установить различную прописку для первой и последней страницы?

+0

Я не нашел прямого исправления вашей проблемы, но вы можете переопределить 'getPageWidth' в' FragmentPagerAdapter' и вернуться 0.9f, вид будет 90% от ширины 'ViewPager', в но он показывает только следующую страницу (не предыдущую), кроме последней страницы. – MohanadMohie

+0

К сожалению, мне нужно показать обе страницы, когда они доступны ... – Alessandro

+0

Как вы это сделали? –

ответ

7

Мне пришлось решить ту же проблему, и я решил ее, установив пользовательский PageTransformer. Я практически перетаскиваю страницы, когда на первом и последнем месте. Дайте мне знать, если это сработает для вас.

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

это хорошее решение! –