如何在viewPager中禁用水平滑动操作?

时间:2016-11-07 10:42:16

标签: android android-fragments android-viewpager

点击卡片时会打开新活动(参见图片),但如果您横向滑动(错误或有意识地),则会发生同样的事情,应禁用该功能。怎么做?

我使用嵌套的viewPager。第一个是水平viewPager(在此水平滚动中被禁用),你可以看到,在第一个片段(名为Digest)中,我使用了垂直viewPager,它工作正常。问题是如果我尝试水平滚动,则打开下一个Activity(单击该卡时应打开)。如果我在卡片上水平滚动,我希望不会发生任何事情。

enter image description here

1 个答案:

答案 0 :(得分:0)

你的问题没有明确,所以生病假设你想阻止viewpager完全滑动。

您只需像这样扩展viewpager小部件。

public class NonSwipeableViewPager extends ViewPager {

  private boolean isPagingEnabled = true;

  public NonSwipeableViewPager(Context context) {
      super(context);
  }

  public NonSwipeableViewPager(Context context, AttributeSet attrs) {
      super(context, attrs);
  }

  @Override
  public boolean onTouchEvent(MotionEvent event) {
      return this.isPagingEnabled && super.onTouchEvent(event);
  }

  @Override
  public boolean onInterceptTouchEvent(MotionEvent event) {
     return this.isPagingEnabled && super.onInterceptTouchEvent(event);
  }

  public void setPagingEnabled(boolean b) {
      this.isPagingEnabled = b;
  }

}

然后以编程方式将此新版本用于水平viewpager和setPagingEnabled(false)。请注意,您仍然可以通过标签与viewpager进行交互,它只会阻止滑动事件。