如何拦截来自ViewPager.OnPageChangeListener触摸事件 [英] How to intercept touch events from ViewPager.OnPageChangeListener
问题描述
我想从标签之间滚动不允许我ViewPager。我有以下情况:
I'm trying to disallow my ViewPager from scrolling between tabs. I have the following situation:
public class MyClass extends ViewPager implements ViewPager.OnPageChangeListener, OnTouchListener {
public MyClass() {
setOnTouchListener(this);
}
@Override
public void onPageScrollStateChanged(int state) {
Log.d("Testing", TAG + " onPageScrollStateChanged");
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
Log.d("Testing", TAG + " onPageScrolled");
}
@Override
public void onPageSelected(int position) {
Log.d("Testing", TAG + " onPageSelected");
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
Log.d("Testing", "intercept");
return false;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d("Testing", "touch2");
return false;
}
}
我从onPageScrolled日志和正常onPageScrollStateChanged,但我没有从onInterceptTouchEvent和onTouch日志。我究竟做错了什么?
I have the logs from onPageScrolled and onPageScrollStateChanged normally, but I do not have logs from onInterceptTouchEvent and onTouch. What am I doing wrong?
推荐答案
这是我如何处理这个(我的整个班级):
This is how I handle this (my entire class) :
public class SelectiveViewPager extends ViewPager {
private boolean paging = true;
public SelectiveViewPager(Context context) {
super(context);
}
public SelectiveViewPager(Context context, AttributeSet attributeSet){
super(context, attributeSet);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent e) {
if (paging) {
return super.onInterceptTouchEvent(e);
}
return false;
}
public void setPaging(boolean p){ paging = p; }
}
布尔页面
给你把这个和关闭,如果你需要它的选项。如果你不需要,只是返回false
。如果你没有做什么特别的 onTouch
,你不需要覆盖它。
The boolean paging
gives you the option to turn this on and off, if you need it. If you don't need, just return false
. If you aren't doing anything special in onTouch
, you don't need to override it.
这篇关于如何拦截来自ViewPager.OnPageChangeListener触摸事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!