У меня была та же проблема с той лишь разницей, что мне нужно было показывать 3 страницы одновременно (предыдущую, текущую и следующую страницы).После очень долгих поисков лучшего решения я думаю, что нашел его.Решение представляет собой сочетание нескольких ответов здесь:
Как указал ответ @Paul Lammertsma - код Дейва Смита в блоге Марка Мерфи является основой для решения.Единственная проблема для меня заключалась в том, что ViewPager
был только в верхней части экрана из-за размера, который они дают в XML-файле:
android:layout_width="150dp"
android:layout_height="100dp"
, что не годилось для моей цели, так какя искал что-то, что будет распространяться по всему экрану.Поэтому я изменил его, чтобы обернуть содержимое, как вы можете видеть здесь:
<com.example.nutrino_assignment.PagerContainer
android:id="@+id/pager_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#CCC">
<android.support.v4.view.ViewPager
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</com.example.nutrino_assignment.PagerContainer>
Теперь я потерял весь эффект от того, что пытался сделать учебник.С помощью @ andro's answer я смог показать более 1 страницы за раз: ровно 2!Текущий и следующий.Сделал это путем переопределения следующим образом:
@Override
public float getPageWidth(int position) {
return(0.9f);
}
Это было почти то, что мне было нужно ... (хотя я думаю, что этого достаточно для того, что вы просили), но для других, кому может понадобиться что-то вроде того, что яНужно: Для последней части решения я использовал идею в этом ответе , снова @Paul Lammertsma.В коде Дейва Смита вы найдете в методе onCreate
следующую строку:
//A little space between pages
pager.setPageMargin(15);
, которую я заменил на:
//A little space between pages
pager.setPageMargin(-64);
, теперь на первой странице выглядит:
|view 1|view 2|view 3|
|screen |
в то время как на втором это выглядит так:
|view 1|view 2|view 3|
|screen |
Надеюсь, это кому-нибудь поможет!Я потратил на это как 2 дня ... Удачи.