我遇到一个问题,我需要在离开标签之前警告用户,标签位于ViewPager中,并由操作栏中的标签控制。
viewPager有一个典型的onPageChangeListener,操作栏标签使用TabListener
基本上我试图找出如何拦截动作以开始更改选项卡,并且只有在用户确认对话框时才允许它发生。我试过的回调似乎并没有阻止发生的变化。是否有任何简单的方法来实现这一点,我失踪了?无论用户是通过滑动(ViewPager)还是选择选项卡(TabListener)尝试离开teh选项卡,都应该执行相同的操作
答案 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);
}
}