我有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);
}
}
但longclick
和click
甚至从未被解雇过,我认为它们可能被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
不会传递任何参数。
这是否可行,无论如何要解决它?