具有ViewPager的ViewGroup的InterceptTouchEvent

时间:2014-08-15 02:04:46

标签: android events

我有ViewGroup,其中包含ViewPager,现在我想将Long Press事件和Click事件添加到视图组(我还需要位置鼠标事件),我试过了:

class MyView extends RelativeLayout{
  MyView(Context context){
      ViewPager vp=....
      addView(vp,0);
      ..... // other views

      setOnLongClickListener(this);
      setOnClickListener(this);

      setLongClickable(true);
      setClickable(true);
    }
}

longclickclick甚至从未被解雇过,我认为它们可能被ViewPager消耗。

然后我发现InterceptTouchEvent可能有效,我试过了:

private final Handler handler = new Handler();
private Runnable longPressTrigger = new Runnable() {
    @Override
    public void run() {
        onMyLongPressed();
    }
};


@Override

public boolean onInterceptTouchEvent(MotionEvent event) {
    boolean intercepted = false;
    int action = event.getAction();
    switch (action) {
        case MotionEvent.ACTION_DOWN:
            handler.postDelayed(longPressTrigger, 1000);
            break;
        case MotionEvent.ACTION_MOVE:
        case MotionEvent.ACTION_UP:
        case MotionEvent.ACTION_CANCEL:
            handler.removeCallbacks(longPressTrigger);

            if (action == MotionEvent.ACTION_UP) {
                // trigger the touch event
                onMyTouched(event.getX(), event.getY());
            }
            break;
    }

    if (intercepted)
        return true;
    return super.onInterceptTouchEvent(event);
}

但我遇到了一些问题:

1我希望ViewPager仍然可以滚动事件我注册了长按和点击事件。这是变量intercepted的作用,但我不知道如何设置它。

2如图所示,当我需要鼠标事件位置时,onMyLongPressed不会传递任何参数。

这是否可行,无论如何要解决它?

0 个答案:

没有答案