自定义视图:在滚动视图内滑动

Custom View: swipe inside of scroll view

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

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

你需要ViewParent.requestDisallowInterceptTouchEvent

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

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