2

问题是滚动将拦截触摸事件已设置为 parent layout。我可以onTouch通过滚动保持活动ScrollView吗?

4

1 回答 1

3

这是一个非常棘手的部分。有一个被覆盖的方法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 指移动,它就像一个魅力。

这是大约一周的研究和实验,它是我想出的一个概述。如果您发现其他任何东西,请告诉我。希望它有所帮助。

于 2012-07-21T22:54:34.597 回答