Resolva o conflito de deslizamento causado pelo mapa aninhado do Baidu no Scrollview

O mapa do Baidu é útil em projetos recentes. De modo geral, o mapa é exibido em uma interface inteira, mas quando eu desenho este produto, preencho as informações relevantes do projeto e selecione um local no mapa abaixo. É a localização do projeto.

O layout é mostrado na figura abaixo: (uma parte do mapa acima desliza para fora e uma parte do mapa não desliza)Insira a descrição da imagem aqui

Como as informações acima são preenchidas em uma tela, elas são usadas para aninhar MapView em Scrollview. Todos sabem que MapView pode deslizar, mas se estiver aninhado em Scrollview, porque MapView é um controle filho, o evento deslizante é controlado pelo pai. O contêiner Scrollview é consumido, então, quando você deseja puxar o mapa para baixo, é sempre um Scrollview de rolagem.

O que devo fazer? ? ?

Basta definir o ouvinte setOnMapTouchListener no BaiduMap. Ao tocar no BaiduMap, você pode interceptar o toque do Scrollview.

Por exemplo:

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

Isso resolve perfeitamente o conflito de deslizamento. Quando você arrasta o dedo no mapa, pode arrastar o mapa como quiser.

Acho que você gosta

Origin blog.csdn.net/qq77485042/article/details/82853007
Recomendado
Clasificación