【问题标题】:How to disable swiping a ViewPager from its edges?如何禁用从边缘滑动 ViewPager?
【发布时间】:2018-04-30 10:07:38
【问题描述】:

我有一个包含Navigation DrawerAutoScrollViewPager 的活动。当我**从手机屏幕的左边缘滑动以打开Navigation Drawer 时,AutoScrollViewPager 的页面会发生变化,而不是出现Navigation Drawer。如何禁用 AutoScrollViewPager 从其边缘滑动?

附:我尝试向 AutoScrollViewPager 添加边距,但如果边距不够大,它看起来很难看并且不起作用。

【问题讨论】:

    标签: android android-viewpager


    【解决方案1】:

    使用Edge Flags

    这里是Documentation

    尝试使用以下代码:

    final View pagerView = findViewById(R.id.Pager); 
    pagerView.setOnTouchListener(new View.OnTouchListener() 
    {         
        @Override
        public boolean onTouch(View v, MotionEvent event)
        {
           if (event.getAction() == MotionEvent.ACTION_DOWN && event.getEdgeFlags() == MotionEvent.EDGE_LEFT) {
                return true;   //disable swipe
            }
        }
     });
    

    【讨论】:

    • 感谢您的回答,但它对我不起作用。我在 IF 块内放了一个祝酒词,发现控件永远不会进入 IF 块内。此外,还会显示一条警告“它调用了 setOnTouchListener,但它没有覆盖 performOnClick”。另外,我想提一下 ViewPager 是一个 AutoScrollViewPager 并希望它不会有所作为。 @rafsanahmad007
    • 我无法准确说出它为什么不起作用。但你应该看看这个:stackoverflow.com/questions/6645537/…stackoverflow.com/questions/12884250/…
    【解决方案2】:

    尝试使用以下代码:

    public class CustomViewPager extends ViewPager {
    
    private boolean enabled;
    
    public CustomViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.enabled = true;
    }
    
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (this.enabled) {
            return true;
        }
    
        return false;
    }
    
    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        if (this.enabled) {
            if (event.getAction() == MotionEvent.ACTION_DOWN && event.getEdgeFlags() == MotionEvent.EDGE_LEFT) {
                return true;   //disable swipe
            }
        }
    
        return false;
    }
    
    public void setPagingEnabled(boolean enabled) {
        this.enabled = enabled;
    } }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 2015-04-14
      • 1970-01-01
      • 2019-11-23
      • 2013-12-16
      • 1970-01-01
      相关资源
      最近更新 更多