禁用ViewPager边界滑动效果(转)

反射设置方法

 1 private EdgeEffectCompat leftEdge;
 2     private EdgeEffectCompat rightEdge;
 3     public void DisableLRScroll(){
 4         try {
 5             Field leftEdgeField = viewPager.getClass().getDeclaredField("mLeftEdge");
 6             Field rightEdgeField = viewPager.getClass().getDeclaredField("mRightEdge");
 7             if(leftEdgeField != null && rightEdgeField != null){
 8                 leftEdgeField.setAccessible(true);
 9                 rightEdgeField.setAccessible(true);
10                 leftEdge = (EdgeEffectCompat) leftEdgeField.get(viewPager);
11                 rightEdge = (EdgeEffectCompat) rightEdgeField.get(viewPager);
12             }
13         } catch (Exception e) {
14             e.printStackTrace();
15         }
16     }

在viewPager的监听事件的onPageScrolled方法中做处理

if(leftEdge != null && rightEdge != null) {
                    leftEdge.finish();
                    rightEdge.finish();
                    leftEdge.setSize(0, 0);
                    rightEdge.setSize(0, 0);
                }

记得在onCreate方法中执行DisableLRScroll()方法

原文地址:https://www.cnblogs.com/weizhxa/p/5829765.html