我有一个选项卡式活动:用户可以向右或向左滑动以更改屏幕。在某些时候,我想录制音频,而在录制音频时,用户不应更改屏幕。
问题:如何限制用户更改ViewPager
中的屏幕(滑动)?
我试图弄清楚如何使用ViewPager
API来做到这一点,但是我没有设法找到合适的方法(ViewPager
中有成百上千个方法,甚至可能有成千上万个方法,但都不是)可能会做我想要的事情。
答案 0 :(得分:1)
创建如下所示的自定义viewPager
public class CustomViewPager extends ViewPager {
private boolean enabled = true;
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
enabled = true;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
if (enabled) {
return super.onInterceptTouchEvent(arg0);
} else {
return false;
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (this.enabled) {
return super.onTouchEvent(event);
}
return false;
}
public void setPagingEnabled(boolean enabled) {
this.enabled = enabled;
}
}
然后只需致电viewPager.setPagingEnabled(false);
答案 1 :(得分:1)
您可以扩展ViewPager类并使用此代码。
public class LockableViewPager extends ViewPager {
private boolean swipeable;
public LockableViewPager(Context context) {
super(context);
}
public LockableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
this.swipeable = true;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return this.swipeable && super.onInterceptTouchEvent(event);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return this.swipeable && super.onTouchEvent(event);
}
public void setSwipeable(boolean swipeable) {
this.swipeable = swipeable;
}
}
然后,在片段或活动中,只需调用mViewPager.setSwipeable(false);
使其无法滑动即可。