[英]Android: Restrict a user from swiping screens in ViewPager
I have a Tabbed Activity: a user can swipe to the right or to the left to change the screens.我有一个标签式活动:用户可以向右或向左滑动以更改屏幕。 At some point I want to record an audio and while it is being recorder the user is not supposed to change the screens.
在某些时候,我想录制音频,而在录制音频时,用户不应该更改屏幕。
Question: How to restrict a user from changing screens (swiping) in ViewPager
?问题:如何限制用户在
ViewPager
更改屏幕(滑动)?
I tried to figure out how to do that using ViewPager
API but I didn't manage to find a proper way (there are hundreds or may be even thousand methods in ViewPager
none of which is likely to do what I want).我试图弄清楚如何使用
ViewPager
API 做到这一点,但我没有设法找到合适的方法( ViewPager
有数百甚至数千个方法, ViewPager
没有一个可能会做我想要的)。
Create a custom viewPager like below创建一个像下面这样的自定义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;
}
}
Then simply call viewPager.setPagingEnabled(false);
然后只需调用
viewPager.setPagingEnabled(false);
You can extend the ViewPager class and use this code.您可以扩展 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;
}
}
Then in your Fragment or Activity you can just call mViewPager.setSwipeable(false);
然后在您的 Fragment 或 Activity 中,您只需调用
mViewPager.setSwipeable(false);
to make it unswipeable.使其不可滑动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.