android开发中百度地图和ScrollView冲突的问题

在Android开发中,如果在ScrollView中嵌入了百度地图,横向拖动时候没有异常,当纵向拖动的时候就会优先拖动ScrollView,而不会触发百度地图。在网上查了很多解决方法,基本都是 修改 mMapView.setOnTouchListener中的onTouch事件,当地图获取到onTouch时ScrollView就不拦截事件,当地图没有获取onTouch时ScrollView就截取onTouch事件并处理,但是想的很美好,现实很残忍,这个方法根本不好用,因为百度地图的mapView根本不会获取到onTouch事件。

解决办法是重写一个ScrollView,判断触摸时是否触摸到地图控件范围内,触摸到了地图范围内,就不拦截事件,否则正常执行拦截。


import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.ScrollView;

public class MyScrollView extends ScrollView
{
	public MyScrollView(Context context) {
		super(context);
	}
	public MyScrollView(Context context, AttributeSet attrs) {
		this(context, attrs, 0);	
	}
	
	public MyScrollView(Context context, AttributeSet attrs, int defStyle) 
	{
		super(context, attrs, defStyle);
	}

	
	
	private Boolean mIfOnMap = false;//是否点击到地图了

	@Override 
	public boolean onInterceptTouchEvent(MotionEvent ev) 
	{ 
		Log.v("test", "onInterceptTouchEvent:"+ev.getAction()+"mIfOnMap:"+mIfOnMap);
			int x = (int) ev.getX();
			int y = (int) ev.getY();
			Rect rect = new Rect();
			if (OrderAuthorActivity.mMapView != null) {
				Log.v("test", "not null");
				OrderAuthorActivity.mMapView.getDrawingRect(rect);
			}
			mIfOnMap = !rect.contains(x, y);
			Log.i("touch map?", mIfOnMap+"" );
			if (mIfOnMap) {
				return false;
			}else {

                                 return super.onInterceptTouchEvent(ev);
			}
	}
		

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值