我有一个FrameLayout
,其中有一个GoogleMap
对象。我想将用户缩放级别限制在某些缩放级别之间。 (这不是关于Google地图的问题,而是关于onInterceptTouchEvent
行为的一般问题。)
所以在FrameLayout
我已覆盖onInterceptTouchEvent
,当用户缩放缩放时,我使用ScaleGestureDetector
检测到它,并检查地图缩放级别是否在所需值之间。< / p>
如果是,onInterceptTouchEvent
会返回false
并且同级视图(Google地图)会定期执行缩放。
如果不是,我会返回true
,然后兄弟视图就不会收到手势。
然而,这会产生一种行为,如果您捏缩放到最大值然后立即捏放大(不抬起手指),视图将不会放大。
这是因为onInterceptTouchEvent
不再被调用(因为我之前已经返回true)并且我无法将偶数传递给兄弟视图。
如果我抬起手指然后捏缩放,它会再次起作用。
无论如何,我可以让视图再次回忆onInterceptTouchEvent
吗?
答案 0 :(得分:0)
我最终通过在viewgroup上实现dispatchTouchEvent并在你想取消请求时返回'true'来解决这个问题。
有关其工作原理的一些一般信息:
在Android中,这是被调用事件的顺序(从头到尾):
如果您在任何阶段中返回'true',它将阻止事件在链中继续。
它足够好并且有效。
感谢。