Est-il possible d'afficher deux pages en même temps, en utilisant un ViewPager
? Je ne recherche pas un effet de bord, mais plutôt deux pages entières en même temps.
Réponses
Trop de publicités?Veuillez consulter la getPageWidth
dans le PagerAdapter
. Remplacez-le et retournez par exemple 0.8f
pour que toutes les pages enfants ne couvrent que 80% de la largeur du ViewPager.
Plus d'informations: http://developer.android.com/reference/android/support/v4/view/PagerAdapter.html#getPageWidth(int)
Voir cette entrée de blog . La technique PagerContainer est résolue mon problème.
ÉDITER: J'ai trouvé la même réponse. Comment migrer de Gallery vers HorizontalScrollView & ViewPager ?
créez votre fichier de mise en page : my_layout.xml :
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<FrameLayout
android:id="@+id/pager_container"
android:layout_width="match_parent"
android:layout_height="240dp"
android:clipChildren="false">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="200dp"
android:clipToPadding="false"
android:layout_height="200dp"
android:layout_marginLeft="70dp"
android:layout_marginRight="70dp"
android:layout_gravity="center" />
</FrameLayout>
</layout>
le viewpager est à peu près aussi petit que vous voulez que vos pages soient. Avec android:clipToPadding="false", les pages en dehors du pager sont également visibles. Mais maintenant, faire glisser en dehors du pager n'a aucun effet. Cela peut être résolu en sélectionnant des touches dans le conteneur du pager et en les transmettant au pager :
MyLayoutBinding binding = DataBindingUtil.<MyLayoutBinding>inflate(layoutInflater, R.layout.my_layout, parent, false)
binding.pager.setOffscreenPageLimit(3);
binding.pager.setPageMargin(15);
binding.pagerContainer.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return chatCollectionLayoutBinding.pager.onTouchEvent(event);
}
});