MapView的OnTouchListener与setBuiltInZoomControls冲突导致无法触发OnTouch的解决办法

转载时请注明转自:http://blog.csdn.net/sam_zhang1984

交流可加新浪微博:Android开发人

 

Sam注:今天在使用MapView时,虽然在MapView里面设置了Touch的监听器,但运行一次程序都只执行一次,即只有第一次触摸屏幕上地图时才有响应,其它都没响应;

后来通过上网查找,原来是OnTouchListener与setBuiltInZoomControls冲突导致无法触发OnTouch。

 

下面转载一篇解决办法:

转自:http://cosyattic.com/archives/141

 

昨天在做一个基于google map api的android APP时,神奇的发现,MapView的OnTouchListener监听器没有像我想象的那样回调OnTouch方法,仅仅响应第一次Touch。经过多次的各种的尝试和网络上的各种search,发现很可能是 MapView的OnTouchListener监听器与MapView.setBuiltInZoomControls发生了冲突(冲突或许不准确,大概是那么个意思)。大概是MapView的缩放Control阻挡了OnTouch事件。

查了很多资料,找到一个我认为比较好的解决办法,那就是不要给MapView设置 OnTouchListener监听器,而应该给MapView实现(extends) Overlay类,并在这个类中复写public boolean onTouchEvent(MotionEvent event, MapView mapView)  方法。恩,然后,大家懂的,我就不说了……

class MapOverlay extends Overlay { @Override public boolean onTouchEvent(MotionEvent event, MapView mapView) { ...... return false; } ...... }

你可能感兴趣的:(MapView的OnTouchListener与setBuiltInZoomControls冲突导致无法触发OnTouch的解决办法)