[英]Android: Restrict a user from swiping screens in ViewPager
我有一个标签式活动:用户可以向右或向左滑动以更改屏幕。 在某些时候,我想录制音频,而在录制音频时,用户不应该更改屏幕。
问题:如何限制用户在ViewPager
更改屏幕(滑动)?
我试图弄清楚如何使用ViewPager
API 做到这一点,但我没有设法找到合适的方法( ViewPager
有数百甚至数千个方法, ViewPager
没有一个可能会做我想要的)。
创建一个像下面这样的自定义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);
您可以扩展 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;
}
}
然后在您的 Fragment 或 Activity 中,您只需调用mViewPager.setSwipeable(false);
使其不可滑动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.