如何在ViewPager中禁用特定页面滑动

时间:2015-02-06 07:32:46

标签: android android-fragments android-viewpager swipe

我的应用中有一个包含5个片段的ViewPager小部件。我有3个按钮可以手动转到页面。对于4页和5页,我希望用户只能通过按下按钮而不能通过滑动。所以我需要通过它们禁用滑动事件,但不能禁用其他人。同样在第4页或第5页中,滑动将完全禁用,后退按钮将出现在操作栏上。如何实现呢?

List<Fragment> l = new ArrayList<>();
    l.add(Fragment.instantiate(this, Osman.class.getName()));
    l.add(Fragment.instantiate(this,Ahmet.class.getName()));
    l.add(Fragment.instantiate(this,Kurik.class.getName()));
    l.add(Fragment.instantiate(this,Sorok.class.getName()));
    l.add(Fragment.instantiate(this,Yah.class.getName()));
    SliderAdapter sa = new SliderAdapter(getSupportFragmentManager(),l);
    vp = (ViewPager) findViewById(R.id.viewPager);
    vp.setAdapter(sa);

1 个答案:

答案 0 :(得分:2)

请关注此问题,以便能够随意禁用滑动How do disable paging by swiping with finger in ViewPager but still be able to swipe programmatically?

并将其与SliderAdapter结合使用,以控制哪些页面可以刷卡。

如果您按照上面的链接,在ViewPager的子类上,您可以在onTouchEvent(MotionEvent event)上添加一些GestureDetector并将其与您的活动一起提供,例如Android: How to handle right to left swipe gestures

通过执行此操作,您现在将拥有一些onSwipeRight并管理您的逻辑,如果页面应该被刷卡,或者下一步去哪里,请向适配器委派问题。