首页 > 解决方案 > 自定义视图:在滚动视图内滑动

问题描述

我用 Canvas 创建了一个自定义视图,并通过覆盖 onTouchEvent 使其交互。但我的视图在 ScrollView 内。当我在自定义视图中将项目拖动/滑动到右侧并稍微向上或向下移动我的手指时,它失去了焦点。然后 ScrollView 做出反应,我的视图永远不会收到 ACTION_UP 事件。

有没有办法避免在我与自定义视图交互时 scrollView-Parent scolls?

标签: androidandroid-layoutandroid-custom-view

解决方案


你需要ViewParent.requestDisallowInterceptTouchEvent

https://developer.android.com/reference/android/view/ViewParent#requestDisallowInterceptTouchEvent(boolean)

在您的自定义视图中,一旦检测到触摸手势是针对它的,请调用scrollview.requestDisallowInterceptTouchEvent(true). 然后滚动视图将在触摸期间忽略进一步的事件,即直到它(滚动视图)接收到一个ACTION_UPACTION_CANCEL事件。


推荐阅读