ViewPager внутри Фрагмент с полями и трансформатором страницы не отображается правильно

У меня есть viewpager с фрагментами внутри него.

Я использую код, аналогичный, например,

Маржа ViewPager в преобразованиях PageTransformer

И отступы, чтобы вы могли видеть исчезнувший край фрагментов по обе стороны фрагмента, который вы просматриваете в данный момент.

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

Т.е. метод transformPage моего ZoomOutPageTransformer не вызывается до тех пор, пока вы не начнете прокручивать, поэтому начальный внешний вид страницы вправо / влево или где-то выглядит неправильно, а затем «прыгайте», чтобы смотреть вправо, как только проведите пальцем по экрану.

Любые идеи, как я могу заставить его правильно отобразить, так, например, если я позвоню

MyViewPager.setCurrentItem (1) – или что угодно, страницы в стороны будут соответствующим образом уменьшены.

Как я могу заставить viewpager корректно отображать изображение с помощью средства zoomoutpagetransformer, применяемого к фрагментам «off screen»?

В принципе метод transformPage () PageTransformer возвращает неверную позицию, когда вы играете с заполнением и полями на пейджере представления. Кажется, это ошибка структуры, как указано здесь . Обходной путь объяснил, что для меня не работает.

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

private void invalidatePageTransformer(final ViewPager pager) { new Handler().post(new Runnable() { @Override public void run() { //no need to invalidate if we have no adapter or no items if (pager.getAdapter() != null && pager.getAdapter().getCount() > 0) { //import check here, only fakeDrag if "beginFakeDrag()" returns true if (pager.beginFakeDrag()) { pager.fakeDragBy(0f); pager.endFakeDrag(); } } } }); } 

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

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

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

  viewPager.scrollBy(5,0); viewPager.scrollBy(-5,0); 

У меня была аналогичная проблема, и я решил, добавив:

 // ... your ViewPager setup code here myViewPager.setPageMargin(1); 

Я попытался настроить дополнение ViewPager, после чего я обнаружил, что 45dp позволят элементу правильно обрабатывать ViewPager.

 <android.support.v4.view.ViewPager ... android:paddingTop="45dp" ... />