2016-11-07 53 views
0

当你点击卡片时(见图),新活动打开,但如果你水平滑动(错误或故意),应该禁用同样的事情。怎么做?如何禁用viewPager中的水平滑动操作?

我使用嵌套viewPager。首先是水平viewPager(在这个水平滚动被禁用),你可以看到,并在第一个片段(命名摘要),我已经使用垂直viewPager,它工作正常。问题是如果我尝试水平滚动,下一个Activity打开(它应该打开点击卡)。我希望没有任何事情发生,如果我在卡上水平滚动。

enter image description here

回答

0

You're没有说清楚你的问题如此虐待假设你想完全阻止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(假)编程。要小心,你仍然可以通过标签与viewpager进行交互,它只会阻止滑动事件。

+0

认为他的问题是,一个新的活动打开卡上的水平和对角滑动,但他只希望它打开卡上的水龙头......换句话说,他的页面有垂直滚动,但由于卡大,我们的拇指通常对角地工作,它打开卡片页面(新活动)而不是滚动。 –

+0

这样的事情,但他有查看传呼机上的垂直滚动... http://queforum.com/android-applications/167786-android-how-make-viewpager-swipe-diagonal-swipes.html –