Scrollview 안에 지도fragment(네이버 지도, 구글지도)를 추가하는 경우 지도를 움직이게 되면 의도와 다르게 Scrollview가 움직인다.
원인은 Scrollview가 터치 이벤트를 우선순위로 갖고 있기 때문에 fragment 내부의 터치 이벤트가 무시되는 상황이 발생한다.
<fragment
android:id="@+id/map_fragment"
android:name="com.naver.maps.map.MapFragment"
android:layout_width="match_parent"
android:layout_height="180dp">
<View
android:id="@+id/ivMapTransparent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@android:color/transparent"/>
</fragment>
requestDisallowInterceptTouchEvent()
메소드를 호출ivMapTransparent.setOnTouchListener { view, motionEvent ->
val action = motionEvent.action
when (action) {
MotionEvent.ACTION_DOWN -> {
scrollView.requestDisallowInterceptTouchEvent(true)
false
}
MotionEvent.ACTION_UP -> {
scrollView.requestDisallowInterceptTouchEvent(false)
true
}
MotionEvent.ACTION_MOVE -> {
scrollView.requestDisallowInterceptTouchEvent(true)
false
}
else -> true
}
}
Reference