Saya menggunakan Android ViewPager
. Yang ingin saya lakukan adalah menampilkan pratinjau halaman di kiri dan kanan. Saya telah melihat di mana saya dapat menggunakan negatif pageMargin
untuk menunjukkan pratinjau dari sisi kanan.
setPageMargin(-100);
Apakah ada juga yang bisa saya tampilkan pratinjau sisi kiri juga? Ini pada dasarnya sesuatu yang mirip dengan widget galeri yang saya cari.
android
android-viewpager
Brian Boyle
sumber
sumber
setPageMargin(-100)
berfungsi dengan benar?Jawaban:
Untuk menampilkan pratinjau halaman kiri dan kanan atur dua nilai berikut
viewpager.setClipToPadding(false);
viewpager.setPadding(left,0,right,0);
Jika Anda membutuhkan spasi antara dua halaman di viewpager, tambahkan
sumber
Jawaban oleh @JijuInduchoodan sempurna dan berhasil. Namun, karena saya relatif baru mengenal Android, butuh beberapa saat untuk memahami & mengaturnya dengan benar. Jadi, saya memposting jawaban ini untuk referensi di masa mendatang dan membantu orang lain yang memiliki posisi yang sama dengan saya.
Tidak perlu menyetel lebar apa pun ke
ViewPager's
halaman di adaptor. Tidak ada kode tambahan yang diperlukan untuk melihat halaman sebelumnya & berikutnya diViewPager
. Namun, jika Anda ingin menambahkan ruang kosong di bagian atas & bawah setiap halaman, Anda dapat menyetel kode berikut keViewPager's
tata letak induk halaman anak.Ini akan menjadi tampilan terakhir ViewPager.
sumber
Solusi dengan ViewPager2 baru
Saat ini Anda harus mempertimbangkan untuk menggunakan ViewPager2 yang "menggantikan ViewPager, menangani sebagian besar masalah pendahulunya" :
Hasil
Kode
Di Aktivitas / Fragmen Anda, siapkan ViewPager2:
Tambahkan
HorizontalMarginItemDecoration
, yang sepeleItemDecoration
:Tambahkan dimensi yang mengontrol seberapa banyak item sebelumnya / berikutnya terlihat, dan margin horizontal item saat ini:
Terakhir tambahkan
ViewPager2
ke tata letak Anda:Satu hal penting:
ViewPager2
item harus memilikilayout_height="match_parent"
(jika tidak maka akan melempar IllegalStateException), jadi Anda harus melakukan sesuatu seperti:Contoh PageTransformer
Google telah menambahkan panduan di ViewPager2 yang memiliki 2
PageTransformer
implementasi yang dapat Anda gunakan sebagai inspirasi: https://developer.android.com/training/animation/screen-slide-2Tentang ViewPager2 baru
sumber
viewpager.setPageTransformer { page, position -> page.translationX = -1 * position }
setOffscreenPageLimit(1)
:)Pada tahun 2017 perilaku tersebut juga dapat dengan mudah dicapai dengan menggunakan
RecyclerView
dengan PagerSnapHelper (ditambahkan pada versi 25.1.0 dukungan v7 perpustakaan): Beberapa waktu yang lalu saya membutuhkan fitur seperti viewpager dan menyiapkan perpustakaan kecil:
MetalRecyclerPagerView - Anda dapat menemukan semua kode beserta contoh di sana.
Terutama terdiri dari satu file kelas: MetalRecyclerViewPager.java (dan dua xmls: attrs.xml dan ids.xml ).
Semoga ini membantu seseorang dan akan menghemat beberapa jam :)
sumber
new PagerSnapHelper().attachToRecyclerView(recyclerView)
dan saya memiliki gertakan halaman.jika seseorang masih mencari solusi, saya telah menyesuaikan ViewPage untuk mencapainya tanpa menggunakan margin negatif, temukan proyek sampel di sini https://github.com/44kksharma/Android-ViewPager-Carousel-UI seharusnya berfungsi dalam banyak kasus tetapi Anda masih dapat menentukan margin halaman dengan
mPager.setPageMargin(margin in pixel);
sumber
Anda dapat melakukan ini dalam file xml, cukup gunakan kode di bawah ini:
sumber
Bagi mereka yang kesulitan menampilkannya di layar berbeda,
sumber
Perhatikan bahwa saat menyetel none zero paddings ke viewpager, penempatan edgeeffect viewpager menjadi kacau, ini adalah bug viewpager, lihat di sini: viewpager edgeeffect bug
Anda bisa menonaktifkan efek tepi dengan menyetel
android:overScrollMode="never"
ke viewpager, atau Anda bisa memperbaiki bug dengan versi kelas EdgeEffect yang sedikit dimodifikasi: ViewPagerEdgeEffect fixsumber
Gunakan adaptor fragmen dan kelas ini untuk melihat viewpager di scroll kiri dan kanan. Tambahkan kelas yang diperlukan untuk menggulir guna melihat halaman berikutnya.
sumber