【发布时间】:2021-02-16 18:16:43
【问题描述】:
我需要拦截触摸事件,所以我创建了一个 CustomSupportMapFragment,但从未获得 onTouchEvent,我对 GMS 版本有相同的代码并且一切正常。所以我不知道。这是我的代码:
class TCSupportMapFragment: SupportMapFragment() {
private var mListener: OnTouchListener? = null
override fun onCreateView(inflater: LayoutInflater, parent: ViewGroup?, savedInstanceState: Bundle?): View {
val layout = super.onCreateView(inflater, parent, savedInstanceState)
val frameLayout = TouchableWrapper(requireContext())
frameLayout.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.transparent))
(layout as ViewGroup).addView(frameLayout, ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT))
return layout
}
fun setListener(listener: OnTouchListener?) {
mListener = listener
}
interface OnTouchListener {
fun onTouch()
}
inner class TouchableWrapper(context: Context) : FrameLayout(context) {
override fun dispatchTouchEvent(event: MotionEvent): Boolean {
when (event.action) {
MotionEvent.ACTION_DOWN -> mListener?.onTouch()
MotionEvent.ACTION_UP -> mListener?.onTouch()
}
return super.dispatchTouchEvent(event)
}
}
}
活动中:
override fun onTouchListener() {
this.binding.nestedScroll.requestDisallowInterceptTouchEvent(true)
}
【问题讨论】:
标签: android kotlin maps huawei-mobile-services huawei-developers