밍쯔와 안작고 안귀여운 에러들🖤

[Android/naverMap] nestedScrollview 안에 mapView/mapFragment 본문

Develop/Android | iOS

[Android/naverMap] nestedScrollview 안에 mapView/mapFragment

밍쯔 2022. 5. 10. 10:34

scrollview 안에 mapview가 움직이지 않는 문제

 

5/11

- 지도가 움직이지만, 상하로 움직일 경우, scrollview에 이벤트를 뺏김

 

🔥5/14

- mapFragment로 선언되어 있던 것이 왜인지는 모르겠지만 touchEvent로 intercept 되지 않아서,

mapFragment를 mapView로 수정해서 이벤트까지 등록하니 성공!!

코드는 아래와 같슴당

 

private NaverMap naverMap;
private MapView mapView;

// onCreate 안
 mapView = binding.mapView;
 mapView.onCreate(savedInstanceState);
 
 --------------
 
// 터치 이벤트 처리
mapView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_MOVE:
                        binding.mapView.getParent().requestDisallowInterceptTouchEvent(true);
                        break;
                    case MotionEvent.ACTION_DOWN:
                        binding.mapView.getParent().requestDisallowInterceptTouchEvent(true);
                        break;
                    case MotionEvent.ACTION_UP:
                        binding.mapView.getParent().requestDisallowInterceptTouchEvent(false);
                        break;
                    case MotionEvent.ACTION_CANCEL:
                        binding.mapView.getParent().requestDisallowInterceptTouchEvent(false);
                        break;
                }
                return binding.mapView.onTouchEvent(event);
            }
        });
        
 --------------
 
    @Override
    public void onResume() {
        super.onResume();
        mapView.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mapView.onPause();
    }
 
    @Override
    protected void onStart() {
        super.onStart();
        mapView.onStart();
    }

    @Override
    protected void onStop() {
        super.onStop();
        mapView.onStop();
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
        mapView.onLowMemory();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mapView.onDestroy();
    }
    
    
    // 위치 및 이벤트 설정
    @Override
    public void onMapReady(@NonNull NaverMap naverMap) {
        this.naverMap = naverMap;
        CameraUpdate cameraUpdate = CameraUpdate.scrollAndZoomTo(new LatLng(_개인_DTO.getLatitude(), _개인_DTO.getLongitude()), _줌크기_);
        naverMap.moveCamera(cameraUpdate);

        UiSettings uiSettings = naverMap.getUiSettings();
        uiSettings.setScrollGesturesEnabled(true); // 스크롤
        uiSettings.setZoomGesturesEnabled(true); // 두손 줌인아웃
        uiSettings.setZoomControlEnabled(false); // 줌인아웃 버튼
        uiSettings.setLocationButtonEnabled(false); // 축적바
        uiSettings.setScaleBarEnabled(false); // 스케일바
        uiSettings.setAllGesturesEnabled(true);
    }

 

 

 

[참고 사이트]

https://zion830.tistory.com/140

 

[Android/Kotlin] MapFragment in ScrollView 구현하기 (Cant scroll map vertically)

상황 설명 스크롤뷰 안에 지도가 들어갈 경우, 지도를 상하 방향으로 움직일 때 스크롤뷰 쪽의 이벤트 우선순위가 높아서 지도는 안움직이고 화면 스크롤이 됨 예제는 네이버 지도를 사용했지

zion830.tistory.com

 

https://devtalk.kakao.com/t/topic/89668

 

안드로이드 스크롤뷰 위에 카카오맵을 사용하면 지도 스크롤이 되지 않는 문제

현재 저는 스크롤뷰 (scrollView) -> 리니어레이아웃 (scrollLayout) –> 릴레이티브레이아웃 (layout_mapView) (MapView) 이런식으로 계층 구조가 이루어져 있고, 현제 맵뷰안에서 지도 화면을 움직이기 위해

devtalk.kakao.com

 

https://velog.io/@jonmad/Til.-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%ED%84%B0%EC%B9%98-%EC%9A%B0%EC%84%A0%EC%88%9C%EC%9C%84-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0-scrollview-%EC%95%88%EC%97%90-touch-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EC%B2%98%EB%A6%AC

 

Til. 안드로이드 터치 우선순위 관리하기 scrollview 안에 touch 이벤트 처리

안드로이드 개발을 하다보면 Scroll기능 때문에 애를 많이 먹게 되는것 같다. ScrollView 안에 SeekBar와 같이 터치를 해야하는 위젯이 있으면 ScrollView가 SeekBar의 터치이벤트를 먹어 버린다. 그래서 이

velog.io