问题是滚动将拦截触摸事件已设置为 parent layout
。我可以onTouch
通过滚动保持活动ScrollView
吗?
1 回答
这是一个非常棘手的部分。有一个被覆盖的方法Activity
是:public boolean onTouchEvent(MotionEvent event)
这是从整个屏幕解释所有触摸事件的通用方法。你可以说,“好的,我可以实现这个,我很高兴......”。这里是关于 android 如何工作的困难部分。
如您所知,每个View
都有自己的onTouchEvent()
方法,您可以实现这些方法以添加一些自定义实现。那么哪种方法会听呢?ScrollView
还是Activity
?_ 这些触摸事件似乎从“内部”元素传递到“外部”元素。我说的是亲子关系。
要考虑的另一件事是 onTouchEvent 方法返回一个布尔值。这个布尔参数决定了触摸事件是向上一级还是由当前的View
. 这意味着如果您有一个CustomViewA
实现 onTouchEvent() 并CustomViewB
实现自己的触摸事件的 a,并且 A 是 B 中的一个孩子,那么触摸事件将首先通过 A,如果未处理,它将转到 B。
所以基本上是的,它可以做到。这取决于您想要执行的触摸事件。
所以在我们的例子中,当触摸事件是水平的时ScrollView
返回。只有当触摸事件不是自己true
处理时才会处理活动的触摸事件,那么你就可以了。ScrollView
否则,您必须覆盖并实现滚动视图的触摸事件,并且在某些情况下,您必须返回 false 以便整个布局来实现它。最后一部分祝你好运。我开始实现投掷效果,但遇到了一些困难,所以我实现了一个带有滚动视图的 2 指移动,它就像一个魅力。
这是大约一周的研究和实验,它是我想出的一个概述。如果您发现其他任何东西,请告诉我。希望它有所帮助。