개발
[코틀린] 뷰페이저2 안에 맵뷰에서 좌우 스와이프가 안먹힐 때 (커스텀 맵뷰)
kks950115
2024. 3. 14. 23:21
728x90
내가 한 결과물은 아니고 다른 팀원과 네이버 맵 api를 쓰는 게 겹쳐서 해결법을 모색하다가 알아낸 방법이다.
뷰페이저는 좌우로 스크롤을 할 수 있는데 뷰페이저 안에 있는 페이지에 맵뷰를 쓸 경우 좌우로 스와이프를 하면 맵뷰가 움직이는 게 아니라 화면이 넘어가버리는 문제가 있었다.
혹여나 같은 문제를 겪는 분에게 참고가 될까해서 공유한다.
영상으로 보면 이해가 빠를 것이다.
커스텀 맵뷰를 사용하는 방법이다.
class ScrollAwareMapView : MapView {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
)
override fun dispatchTouchEvent(event: MotionEvent?): Boolean {
parent.requestDisallowInterceptTouchEvent(true)
return super.dispatchTouchEvent(event)
}
}
xml 파일에다가 커스텀한 맵뷰를 써준다.
<com.package.view.widget.ScrollAwareMapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent" />
mapview 초기화 방법
private val mapView : MapView by lazy{
requireViewDataBinding().map
}
그외에는 생명주기를 맞춰주고 써주면 된다. 이건 공식문서에 써있으니 참고하면 된다.
참고 : https://yuar.tistory.com/entry/NaverMap-API-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0
728x90
반응형