Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ViewPager disable swiping to a certain direction

Tags:

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?

like image 232
WonderCsabo Avatar asked Sep 06 '13 14:09

WonderCsabo


People also ask

How do I stop ViewPager swiping?

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.

What is difference between ViewPager and ViewPager2?

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 .


1 Answers

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.

like image 166
Aviv Mor Avatar answered Oct 11 '22 15:10

Aviv Mor