是否可以禁用 ViewPager 上的滚动 [英] Is it possible to disable scrolling on a ViewPager
问题描述
我有一个 ViewPager
实例化一个 View
.我想在搜索结果返回到视图时暂时禁用 viewpager 和子按钮的滚动.我调用了 viewPager.setEnabled(false)
但这并没有禁用它.
I have a ViewPager
which instantiates a View
. I'd like to disable both the scrolling of the viewpager and the child buttons momentarily while a search result is returned to the view. I've calling viewPager.setEnabled(false)
but this doesn't disable it.
有人有什么想法吗?
推荐答案
一个简单的解决方案是创建您自己的 ViewPager
子类,它有一个 private boolean
标志,<代码>isPagingEnabled.然后覆盖 onTouchEvent
和 onInterceptTouchEvent
方法.如果 isPagingEnabled
等于 true,则调用 super
方法,否则 return
.
A simple solution is to create your own subclass of ViewPager
that has a private boolean
flag, isPagingEnabled
. Then override the onTouchEvent
and onInterceptTouchEvent
methods. If isPagingEnabled
equals true invoke the super
method, otherwise return
.
public class CustomViewPager extends ViewPager {
private boolean isPagingEnabled = true;
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return this.isPagingEnabled && super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return this.isPagingEnabled && super.onInterceptTouchEvent(event);
}
public void setPagingEnabled(boolean b) {
this.isPagingEnabled = b;
}
}
然后在您的 Layout.XML
文件中将任何
标签替换为
标签.
Then in your Layout.XML
file replace any <com.android.support.V4.ViewPager>
tags with <com.yourpackage.CustomViewPager>
tags.
此代码改编自此博文.
这篇关于是否可以禁用 ViewPager 上的滚动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!