在ScrollView上内嵌百度地图遇到两个问题

  1. 事件冲突,移动地图的时候屏幕滚动了
  2. 移动ScrollView的时候,百度地图出现黑边

问题1的处理就有各种办法了,核心都是拦截事件,我使用的办法是加一个容器,当用户的事件范围是在容器内时,让scrollview不接收事件处理即可。

public class MapScrollContainerView extends FrameLayout {

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {

        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
            getParent().requestDisallowInterceptTouchEvent(true);

        } else if (ev.getAction() == MotionEvent.ACTION_UP) {          getParent().requestDisallowInterceptTouchEvent(false);
      }

        return super.dispatchTouchEvent(ev);
    }

    public MapScrollContainerView(Context context) {
        super(context);
    }

    public MapScrollContainerView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MapScrollContainerView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

}

问题2的处理,在百度的更新文档上有

2015年10月20日 百度地图Android SDK v3.6.0发布
9、新增TextureMapView,实现地图由TextureView渲染,解决原MapView基于系统GLSurfaceView导致在TabHost和scrollView中等闪黑屏、白边、压盖等问题(android 4.0以上系统,并开启强制GPU渲染)

将MapView改为TextureMapView,或者将SupportMapFragment改为TextureSupportMapFragment即可。

相关文章:

  • 2021-08-10
  • 2021-12-15
  • 2021-12-31
  • 2021-10-24
  • 2021-11-18
  • 2021-09-28
  • 2021-12-26
猜你喜欢
  • 2022-01-03
  • 2021-05-14
  • 2022-12-23
  • 2021-05-12
  • 2022-01-09
  • 2022-12-23
  • 2022-01-03
相关资源
相似解决方案