override fun onMapReady(p0: GoogleMap) {
p0.setOnCameraMoveStartedListener(this)
}
override fun onCameraMoveStarted(reason: Int) {
when(reason) {
GoogleMap.OnCameraMoveStartedListener.REASON_GESTURE -> {
// The user gestured on the map
childView?.parent?.requestDisallowInterceptTouchEvent(true)
}
GoogleMap.OnCameraMoveStartedListener.REASON_API_ANIMATION -> {
// The user tapped something on the map
childView?.parent?.requestDisallowInterceptTouchEvent(true)
}
GoogleMap.OnCameraMoveStartedListener.REASON_DEVELOPER_ANIMATION -> {
// The app moved the camera
childView?.parent?.requestDisallowInterceptTouchEvent(true)
}
}
}
4条答案
按热度按时间zwghvu4y1#
尝试将
nestedScrollingEnabled="true"
添加到底部图纸布局:cig3rfwq2#
我有一个
BottomSheetDialogFragment
(父View
),它包含SupportMapFragment
(子View
)。平移Map只对水平手势有效。正如OP提到的,这是因为BottomSheet
和Map
触摸事件在垂直手势时发生冲突。我的
BottomSheetDialogFragment
实现了OnMapReadyCallback
和GoogleMap.OnCameraMoveStartedListener
。当设置为
true
时,requestDisallowInterceptTouchEvent()
不允许父View
拦截子View
的触摸事件。我现在可以在我的底部表单对话框片段中放大/缩小Map(水平和垂直手势)。arknldoa3#
我将**android:nestedScrollingEnabled=“true”**添加到包含我的谷歌Map的FragmentContainerView中。
现在,我可以在谷歌Map中机动,正常使用我的底表。
htzpubme4#
将Google MapsMap片段添加到
LinearLayout
中,并将android:nestedScrollingEnabled="true"
此行添加到LinearLayout
中。