Używam Androida ViewPager
. Chcę tylko pokazać podgląd strony po lewej i po prawej stronie. Widziałem, gdzie mogę użyć negatywu, pageMargin
aby wyświetlić podgląd prawej strony.
setPageMargin(-100);
Czy w ogóle mogę wyświetlić podgląd lewej strony? Jest to w zasadzie coś podobnego do widżetu galerii, którego szukam.
android
android-viewpager
Brian Boyle
źródło
źródło
setPageMargin(-100)
działa poprawnie?Odpowiedzi:
Aby wyświetlić podgląd lewej i prawej strony, ustaw następujące dwie wartości
viewpager.setClipToPadding(false);
viewpager.setPadding(left,0,right,0);
Jeśli potrzebujesz odstępu między dwiema stronami w podglądzie, dodaj
źródło
Odpowiedź @JijuInduchoodan jest doskonała i działa. Jednak ponieważ jestem stosunkowo nowy w Androidzie, zajęło mi trochę czasu, aby zrozumieć i ustawić go prawidłowo. Dlatego zamieszczam tę odpowiedź do wykorzystania w przyszłości i pomagam każdemu, kto jest w tym samym miejscu co ja.
Nie ma potrzeby ustawiania żadnej szerokości
ViewPager's
strony w adapterze. Nie jest wymagany żaden dodatkowy kod, aby wyświetlić poprzednią i następną stronęViewPager
. Jeśli jednak chcesz dodać puste miejsce na górze i na dole każdej strony, możesz ustawić następujący kod naViewPager's
układ nadrzędny strony podrzędnej.To będzie ostateczny wygląd ViewPagera.
źródło
Rozwiązanie z nowym ViewPager2
W dzisiejszych czasach powinieneś rozważyć użycie ViewPager2, który „zastępuje ViewPager, rozwiązując większość problemów jego poprzednika” :
Wynik
Kod
W swojej aktywności / fragmencie skonfiguruj ViewPager2:
Dodaj
HorizontalMarginItemDecoration
, co jest trywialneItemDecoration
:Dodaj wymiary, które kontrolują, jaka część poprzedniego / następnego elementu jest widoczna, oraz poziomy margines bieżącego elementu:
Na koniec dodaj
ViewPager2
do swojego układu:Jedna ważna rzecz:
ViewPager2
element musi miećlayout_height="match_parent"
(w przeciwnym razie rzuca wyjątek IllegalStateException), więc powinieneś zrobić coś takiego:Przykłady PageTransformera
Google dodał przewodnik po ViewPager2, który ma 2
PageTransformer
implementacje, których możesz użyć jako inspiracji: https://developer.android.com/training/animation/screen-slide-2O nowym ViewPager2
źródło
viewpager.setPageTransformer { page, position -> page.translationX = -1 * position }
setOffscreenPageLimit(1)
:)W 2017 r takiego działania dodatkowo może być łatwo osiągnięty za pomocą
RecyclerView
z PagerSnapHelper (wersja 25.1.0 dodano biblioteki nośnej V7) Jakiś czas temu potrzebowałem funkcji przypominającej przeglądarkę i przygotowałem małą bibliotekę:
MetalRecyclerPagerView - możesz tam znaleźć cały kod wraz z przykładami.
Głównie składa się z jednego pliku klasy: MetalRecyclerViewPager.java (oraz dwóch plików xml: attrs.xml i ids.xml ).
Mam nadzieję, że to komuś pomoże i pozwoli zaoszczędzić kilka godzin :)
źródło
new PagerSnapHelper().attachToRecyclerView(recyclerView)
i mam przyciąganie stron.jeśli ktoś nadal szuka rozwiązania, dostosowałem ViewPage, aby osiągnąć to bez użycia ujemnego marginesu, przykładowy projekt znajdziesz tutaj https://github.com/44kksharma/Android-ViewPager-Carousel-UI powinien działać w większości przypadków ale Ty nadal można zdefiniować margines strony za pomocą
mPager.setPageMargin(margin in pixel);
źródło
Możesz to zrobić w pliku xml, po prostu użyj poniższego kodu:
źródło
Dla tych, którzy mają problemy z wyświetlaniem tego na różnych ekranach,
źródło
Zauważ, że przy ustawianiu żadnych zerowych wypełnień na stronie podglądu, umieszczenie efektu krawędzi jest pomieszane, jest to błąd przeglądarki, zobacz tutaj: błąd efektu krawędzi widoku strony
Możesz albo wyłączyć efekt krawędzi, ustawiając
android:overScrollMode="never"
przeglądarkę, albo możesz naprawić błąd za pomocą nieznacznie zmodyfikowanej wersji klasy EdgeEffect : poprawka ViewPagerEdgeEffectźródło
Użyj tego adaptera fragmentu i klasy, aby wyświetlić przeglądarkę w przewijaniu w lewo i w prawo. Dodaj niezbędne klasy, aby przewijać, aby wyświetlić następne strony.
źródło