Hii Dev, critanya nih gua lagi develop halaman home applikasi yang punya 2 tabulasi, dan atas permintaan klien, sehingga gua cuman perlu nampilin satu doang tabulasi, tanpa harus menghapus tabulasi yang lain. Nah, kira-kira gimana tuh? gua sempat coba sepotong code ini tapi gak work, sebenernya ini diterapkan di java, cuman di kotlin juga bisa, masalahnya gak work, mungkin kasus gua berbeda dengan kasus yang dialami si penjawab.
viewPager.setPagingEnabled(false)
Oke, bukan berarti tidak ada solusi untuk kasus gua, tentu saja ada, yaitu dengan cara gua buat sendiri widget ViewPager-nya, giaman caranya? simak rangkuman gua di bawah ini.
Sebenarnya tidak ada cara bawaan dari viewPager official Android untu menonaktifkan swiping diantara halaman-halaman viewPager, sehingga yang memungkinkan untuk dilakukan adalah dengan cara membuat extensi / widget ViewPager sendiri dengan cara membuat class, terus mengextend ViewPager, lalu kita override membernya. Member yang akan kita dapatkan adalah onTouchEven dan onInterceptTouchEvent, keduanya dapat kita manfaatkan untuk mencegah tindakan swipe, berikut kode selengkapnya.
class SwipeLockableViewPager(context: Context, attrs: AttributeSet): ViewPager(context, attrs) {
private var swipeEnabled = false
override fun onTouchEvent(event: MotionEvent): Boolean {
return when (swipeEnabled) {
true -> super.onTouchEvent(event)
false -> false
}
}
override fun onInterceptTouchEvent(event: MotionEvent): Boolean {
return when (swipeEnabled) {
true -> super.onInterceptTouchEvent(event)
false -> false
}
}
fun setSwipePagingEnabled(swipeEnabled: Boolean) {
this.swipeEnabled = swipeEnabled
}
}
Buat class baru dan isi dengan kode diatas, berikutnya ganti viewPager bawaan android dengan viewPager class kamu tadi, caranya seperti di bawah ini.
<mypackage.SwipeLockableViewPager
android:id="@+id/myViewPager"
android:layout_height="match_parent"
android:layout_width="match_parent" />
Sekarang dalam activity tertentu kamu dapat men-disable / meng-enable swipe viewPager suka-suka dan kapan saja dengan cara memanggil fungsinya.
myViewPager.setSwipePagingEnabled(false)
Oke gitu doang, semoga bermanfaat and good luck!