未检测到我的MotionEvent.ACTION_DOWN

时间:2015-11-25 15:11:42

标签: 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;
        }
    });

1 个答案:

答案 0 :(得分:4)

我在http://neevek.net/posts/2013/10/13/implementing-onInterceptTouchEvent-and-onTouchEvent-for-ViewGroup.html

上找到了一个很好的解释

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

解决方案我用这个覆盖了类并使用了我的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;
}

}