【发布时间】:2023-02-10 22:56:08
【问题描述】:
标签: android kotlin scrollview
标签: android kotlin scrollview
视图本身可以阻止它。像这样的触摸事件通过拦截触摸事件流来工作。触摸子视图时,父视图可以根据需要请求窃取事件流。孩子可以通过调用 requestDisallowInterceptTouchEvent 来阻止它。它需要在触摸开始时(在按下事件上)调用 requestDisallowInterceptTouchEvent(true),在触摸结束时(在向上事件上)调用 requestDisallowInterceptTouchEvent(false)。如果您无法编辑视图本身的代码,请设置一个 onTouchListener 并为其执行此操作。确保侦听器返回 false,以便也调用视图的内置触摸侦听器。
【讨论】:
我将不拦截滚动的地图视图包装到拦截父 NestedScrollView 中的滚动的自定义视图:
class ScrollLockView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet
) : FrameLayout(context, attrs) {
override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
requestDisallowInterceptTouchEvent(true)
return false
}
}
XML:
<my.package.ScrollLockView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<VendorViewNeedLockScrollFor />
</my.package.view.ScrollLockView>
【讨论】: