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