I want to disable the swiping, but only to the right side. I found a working solution in this answer. Unfortunately, this copies the whole ViewPager
source to achieve the goal. Is there any methods just inheriting the existing class and not duplicating?
To enable / disable the swiping, just overide two methods: onTouchEvent and onInterceptTouchEvent . Both will return "false" if the paging was disabled. You just need to call the setPagingEnabled method with false and users won't be able to swipe to paginate.
ViewPager2 is an improved version of the ViewPager library that offers enhanced functionality and addresses common difficulties with using ViewPager . If your app already uses ViewPager , read this page to learn more about migrating to ViewPager2 .
I'm not sure this is exactly what you need: I needed a viewpager for a wizard with a max page that the user can't pass it.
At the end the solution was in the adapter. I changed the count of the PagerAdapter and this way blocks the user from passing the max page:
@Override public int getCount() { return mProgress; //max page + 1 }
When the user progresses to the next page:
private void setWizardProgress(int progress) { if(progress > mProgress) { mProgress = progress; mWizardPagerAdapter.notifyDataSetChanged(); } }
This way when the user is at max page he can't scroll to the right.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With