使用ViewPager和操作栏选项卡阻止选项卡之间的导航

时间:2013-12-12 14:08:47

标签: android android-layout android-fragments android-viewpager

我遇到一个问题,我需要在离开标签之前警告用户,标签位于ViewPager中,并由操作栏中的标签控制。

viewPager有一个典型的onPageChangeListener,操作栏标签使用TabListener

基本上我试图找出如何拦截动作以开始更改选项卡,并且只有在用户确认对话框时才允许它发生。我试过的回调似乎并没有阻止发生的变化。是否有任何简单的方法来实现这一点,我失踪了?无论用户是通过滑动(ViewPager)还是选择选项卡(TabListener)尝试离开teh选项卡,都应该执行相同的操作

1 个答案:

答案 0 :(得分:0)

使用下面的课程可以阻止滑动 尝试它,如果有任何问题然后评论,我会尝试解决它。​​

public class CustomViewPager extends ViewPager {
    private boolean enabled;
    private boolean blockSwipe = false;

    public CustomViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.enabled = true;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (this.enabled) {
            return super.onTouchEvent(event);
        }
        return false;
    }

    public void setBlockSwipe(boolean blockSwipe) {
        this.blockSwipe = blockSwipe;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        if (blockSwipe)
            return false;
        else
            return super.onInterceptTouchEvent(event);
    }
}