android - 未检测到我的 MotionEvent.ACTION_DOWN

标签 android android-viewpager ontouchlistener motionevent

我的问题是检测到所有触摸事件,但未检测到 Action_Down 事件。日志导致事件 1、2 而不是 0(向下)。

这是我的代码

final ViewPager homeViewPager = (ViewPager)findViewById(R.id.homeViewPager);

    homeViewPager.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch (View v, MotionEvent event){
                Log.i("ViewPager", "event " + event.getAction());
                switch (event.getAction()) {
                    case MotionEvent.ACTION_MOVE:
                        Log.i("ViewPager", "ACTION_MOVE");
                        break;
                    case MotionEvent.ACTION_DOWN:
                        Log.i("ViewPager", "ACTION_DOWN");
                        break;
                    case MotionEvent.ACTION_UP:
                        Log.i("ViewPager", "ACTION_UP ");
                        break;
                }
            return false;
        }
    });

最佳答案

我在 http://neevek.net/posts/2013/10/13/implementing-onInterceptTouchEvent-and-onTouchEvent-for-ViewGroup.html 上找到了很好的解释

简单地说:viewpager 是一个 View 组,因此默认情况下它将其(向下)触摸事件传递给 subview

解决方案我用这个覆盖类并使用我的 viewpager 类

public class MyViewPager extends ViewPager {
public MyViewPager(Context context) {
    super(context);
}

public MyViewPager(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    return true;
}

关于android - 未检测到我的 MotionEvent.ACTION_DOWN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33920000/

相关文章:

android - 处理程序未在辅助线程中加速应用程序

Android - 如何检测 LinearLayout 上的单击?

android - 如何使用 OnTouchListener 在 Android 中捕获双击事件

android - 返回上一个 Activity 的第二个

php - 使用移动网页检测 Android 应用程序是否已安装在设备上 - PHP 和 JS

android - Android 小部件支持单向滑动

android - 如何在我的一个 viewpager 页面中访问我的按钮?

android - 拖动时不调用 onTouch() ACTION_MOVE 案例

android - 尝试安装 APK 包时 INSTALL_FAILED_ALREADY_EXISTS

java - 根据特定条件替换 ViewPager fragment