Control which directions the ViewPager can be scrolled, dynamically with UI feedback

后端 未结 5 492
既然无缘
既然无缘 2020-12-13 22:40

I\'m working on an app which uses many pages to swipe through, however at some pages I would like to be able to prevent scrolling to the next page until they\'ve selected so

5条回答
  •  一整个雨季
    2020-12-13 23:12

    I have been googling high and low for a good way to solving this problem... I tried overriding ontouchevent etc...

    I decided this was the best solution for me (and less hacky).. was just to implement a maximum or minimum tracker and set it to current page

            maxPageToScroll = viewPager.getCurrentItem();
            minPageToScroll = viewPager.getCurrentItem();
    

    and then add to "onPageSelected" method:

    public void onPageSelected(int position) {
    
            if (position < minPageToScroll) {
                viewPager.setCurrentItem(maxPageToScroll);
            }
            else if (position > maxPageToScroll) {
                viewPager.setCurrentItem(maxPageToScroll);
                // you can alert here that user needs to do certain actions before proceeding
            }
            else { 
                // enter normal commands here
            }
    

    consequently, when conditions are met you simply increase the maxpage by one..

            maxPageToScroll = viewPager.getCurrentItem() + 1;
    

    note that this doesn't prevent user form scrolling... it just prevents view pager from changing pages.

提交回复
热议问题