ScrollviewでネストされたBaiduマップによって引き起こされるスライドの競合を解決します

Baiduマップは最近のプロジェクトで役立ちます。一般的に、マップはインターフェイス全体に表示されますが、この製品を設計するときは、プロジェクトの関連情報を上部に入力し、下のマップで場所を選択します。プロジェクトの場所です。

レイアウトは下図のようになります(上部の一部がスライドアウトされており、マップの一部がスライドアウトされていません)ここに写真の説明を挿入

上記の情報は画面に入力されるため、ScrollviewにMapViewをネストするために使用されます。MapViewがスライドできることは誰もが知っていますが、MapViewは子コントロールであるため、Scrollviewにネストされている場合、スライドイベントは親によって制御されます。コンテナのScrollviewが消費されるため、マップをプルダウンするときは、毎回スクロールするScrollviewです。

私は何をすべきか?

BaiduMapでsetOnMapTouchListenerリスナーを設定するだけです。BaiduMapに触れると、Scrollviewのタッチを傍受できます。

次のような:

mBaiduMap.setOnMapTouchListener(new BaiduMap.OnMapTouchListener() {
            @Override
            public void onTouch(MotionEvent motionEvent) {
                if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
                    scrollView.requestDisallowInterceptTouchEvent(false);
                } else {
                    scrollView.requestDisallowInterceptTouchEvent(true);
                }
            }
        });

これにより、スライドの競合が完全に解決されます。マップ上で指をドラッグすると、マップを好きなようにドラッグできます。

おすすめ

転載: blog.csdn.net/qq77485042/article/details/82853007