Disabling & Enabling Paging In ViewPager in Android

前端 未结 3 1859
广开言路
广开言路 2020-12-14 10:36

I am using android compatibility package version 4 for displaying pdf pages in my app. I have used PagerAdapter & ViewPager for displaying pdf pages like horizontal scro

相关标签:
3条回答
  • 2020-12-14 11:08

    I was having a similar problem with paging image files that need pinch to zoom. Simply put Needing a way to disable paging when image is zoomed in and enable it when the whole image is shown. I solved it like this and think you could do a similar thing. First extend : class MyViewPager extends ViewPager {...} And then in that class override following two methods

        @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (YOUR_CRITERIA_TOENABLE_DISABLE) {
            return true;
    
        } else {
            return super.onTouchEvent(event);
        }
    }
    
    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        return super.onInterceptTouchEvent(event);
    }
    

    Be sure to use your view pager in xml layouts or dynamic creation from code.

    0 讨论(0)
  • 2020-12-14 11:12
    @Override
    public boolean onTouchEvent(MotionEvent event) {
         if (this.enabled) {
               return super.onTouchEvent(event);
         }
         return false;
    }
    
    public void setPagingEnabled(boolean enabled) {
        this.enabled = enabled;
    }
    

    replace "return false" to "return this.enable" and set default value of this.enable to false

    0 讨论(0)
  • 2020-12-14 11:14

    You're setting it to false but have no case for resetting it back to true. Also, your intercept touch logic seems a bit odd... the only time you allow the pager to intercept (and thereby process in onTouchEvent()) is when you set paging enabled to false. How about the following?

     @Override
        public boolean onInterceptTouchEvent(MotionEvent event) {
            boolean result = true;
            View scroll = getChildAt(childId);
            if (scroll != null) {
                Rect rect = new Rect();
                CommonLogic.logMessage("PDF Page Rectangle  ", TAG, Log.VERBOSE);
                scroll.getHitRect(rect);
                if (rect.contains((int) event.getX(), (int) event.getY())) {
                    setPagingEnabled(false);
                    result = false;
                } else {
                    setPagingEnabled(true);
                }
            }
            return result;
        }
    
    0 讨论(0)
提交回复
热议问题