我在浏览器中使用onFling来刷下一个活动。但是,如果视图周围有滚动视图,则此方法无效。
显然它会吸收手势并停止我的onFling。
这个问题还有吗?
答案 0 :(得分:4)
你是对的,ScrollView因为它的继承功能而“窃取”了这个手势。我之前通过将onTouchListener应用于ScrollView本身而不是其直接父视图来解决这个问题。
答案 1 :(得分:2)
检查这段代码:(覆盖ScrollView
的dispatchTouchEvent)
public class yourScrollView extends ScrollView{
//constructors and everything
//You might want to pass your GestureDetector (of course)
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
super.dispatchTouchEvent(ev);
return myGestureDetector.onTouchEvent(ev);
}
}
答案 2 :(得分:0)
我无法评论答案,所以我写了一个新答案。
我发现覆盖dispatchTouchEvent
的{{1}}效果很好,但是手势处理程序需要在ScrollView
之前调用,因为该方法可能会更改某些事件的坐标奇怪的方式。特别是当我试图垂直滚动到视图的末尾时,我看到Y值跳跃。
在滚动视图处理之前调用手势处理程序将允许它使用滚动视图坐标而不是内部滚动的坐标。
所以:
super.dispatchTouchEvent
只要视图没有开始滚动,滚动视图中的元素就会起作用,但会正确检测到手势。