6

Я использую ViewPager для скользящего эффекта в своем приложении.Просмотр в представлении просмотра пейджера между предыдущим и следующим видом

У меня есть пейджер.setPageMargin(), чтобы сделать видимость следующего и предыдущего просмотров, к сожалению, мой следующий вид переплетается с текущим видом.

Ниже мой код

pager = (ViewPager) findViewById(R.id.myviewpager); 

    adapter = new MyPagerAdapter(this, this.getSupportFragmentManager()); 
    pager.setAdapter(adapter); 
    pager.setOnPageChangeListener(adapter); 



    // Set current item to the middle page so we can fling to both 
    // directions left and right 
    pager.setCurrentItem(FIRST_PAGE); 

    // Necessary or the pager will only have one extra page to show 
    // make this at least however many pages you can see 
    pager.setOffscreenPageLimit(10); 

    // Set margin for pages as a negative number, so a part of next and 
    // previous pages will be showed 

    // 
    pager.setPageMargin(-450); 

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

enter image description here

части отмечаются в рисунке должны идти за центр карты.

+0

Возможный дубликат [Android ViewPager - Показать предварительный просмотр страницы слева и справа] (http://stackoverflow.com/questions/10098040/android-viewpager-show-preview-of-page-on-left- и-right) –

+0

@BillyRiantono его не дублируется, в прикрепленном изображении, если вы видите, что я displayi ng next card, но следующая карта (отмечена в овале) накладывается на текущую карту (центральная карта) – Suresh

+0

Hi @Suresh У вас есть решение для вашего дела? – phongvan

ответ

0

Попробуйте это:

pager.setClipToPadding(false); 
    pager.setPadding(50, 0, 50, 0); 

вместо:

pager.setPageMargin(-450); 
+0

@ Мила Азхар это не сработало – Suresh

+0

Я попробовал с bringToFront(), но это не сработало – Suresh

0

На самом деле я принес требуемое вид на передней

view.bringToFront(); 

Примечание: Хотите определить правильный макет, который в центре просмотра текущего отображаемого пейджера страницы

+0

Можете ли вы сказать, как вы определили правильный макет, который находится в центре просмотра пейджера? – Favolas

1
pager.setPadding(0, 0, 0, 0); 
pager.setPageMargin(0, 0, 0, 0); 

Вы просто используете match_parent для высоты и ширины офсетной бумаги tks. надеюсь, что это пригодится вам

0

Я нашел решение для версии post-KitKat. В основном то, что я сделал, - это увеличение высоты текущего центра. (Я все еще работаю для предварительного Lollipop раствора)

Вот мой код, Установить OnPageChangeListener вашему ViewPager и, в OnPageSelected Метод

 @Override public void onPageSelected(int position) { 

     //Counter for loop 
     int count = 0; 
     int PAGER_LOOP_THRESHOLD = 2; 
     if (position >= PAGER_LOOP_THRESHOLD) { 
     count = position - PAGER_LOOP_THRESHOLD; 
     } 
     do { 
     Fragment fragment = (Fragment) adapter.instantiateItem(pager, count); 

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP 
      && fragment.getView() != null) { 

      //If it's current center position, increase view's elevation. Otherwise, we reduce elevation 
      if (count == position) { 
      fragment.getView().setElevation(8.0f); 
      } 
      else { 
      fragment.getView().setElevation(0.0f); 
      } 
     } 
     count++; 
     } while (count < position + PAGER_LOOP_THRESHOLD); 
    } 
0

, так как вы настраиваете pager.setPageMargin (-450); вам также нужно дать 240 дополнений к дочернему фрагменту ViewPage и pager.setClipToPadding (false); для плавной анимации.

если кто-то до сих пор ищет решение, я настроил ViewPage, чтобы достичь без отрицательного запаса, найти образец проекта здесь https://github.com/44kksharma/Android-ViewPager-Carousel-UI он должен работать в большинстве случаев, но вы можете определить поля страницы с mPager.setPageMargin(margin in pixel);

Смежные вопросы