gpt4 book ai didi

android - 如何拦截来自 ViewPager.OnPageChangeListener 的触摸事件

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:30:58 27 4
gpt4 key购买 nike

我试图禁止我的 ViewPager 在选项卡之间滚动。我有以下情况:

        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 的日志。我做错了什么?

最佳答案

这就是我处理这个问题的方式(我的整个类(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; }

}

bool 值 paging 使您可以根据需要选择打开和关闭它。如果不需要,只需return false。如果您在 onTouch 中没有做任何特殊的事情,则不需要覆盖它。

关于android - 如何拦截来自 ViewPager.OnPageChangeListener 的触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14764603/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com