我想听一下viewFlipper的触摸事件。我已经能够在我的活动中听取触摸事件,然后修改viewFlipper,但是当用户在活动中的任何地方都会触发这些事件,我需要专门在viewFlipper上捕获触摸事件。我尝试添加setOnTouchListener但它没有被调用。我假设viewFlippers孩子(网页浏览)正在“消费”触摸事件。
一个解决方案是将setOnTouchListener添加到每个webview中,但这感觉就像一个黑客。有谁知道另一种方式?
谢谢,
伊恩
很抱歉,如果这是一个双重帖子 - 但我以前的帖子似乎已经消失了。
答案 0 :(得分:4)
使用ViewGroup.onInterceptTouchEvent(MotionEvent)
你应Reference the Android Documentation,因为它的使用非常复杂。
基本使用概要:
您在此处收到触摸事件。如果要使用它,则返回true并将控件传递给ViewFlipper的onTouchEvent()
。返回false,它将继续传递给孩子。 onTouchEvent()
也应返回true以确保将所有其他事件返回到ViewFlipper的方法。孩子还将收到行动ACTION_CANCEL
的原始活动。
答案 1 :(得分:4)
最后它对我有用。默认情况下返回true以在此侦听器上获得多个调用。
viewFlipper.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (this.gestureDetector.onTouchEvent(event)) {
return false;
}
return true;
}
});
答案 2 :(得分:1)
我遇到了同样的问题,发现您的网页试图谷歌寻求答案。 经过一些非常令人沮丧的尝试之后,我最终找到了一个非常简单的解决方案,我仍然像你一样听取整个活动的触摸,但是如果触摸了ViewFlippers,我会在OnTouchEvent上过滤:
@Override
public boolean onTouchEvent(MotionEvent event) {
if(mFlip.isInTouchMode()){
return gestureDetector.onTouchEvent(event);
} else{
return super.onTouchEvent(event);
}
}
希望它有所帮助!