【问题标题】:How to add touch event for a Layout that contains a ScrollView如何为包含 ScrollView 的布局添加触摸事件
【发布时间】:2012-07-21 21:59:02
【问题描述】:

问题是滚动将拦截触摸事件已设置为父layout。 我可以在ScrollView 中滚动保留onTouch 事件吗?

【问题讨论】:

    标签: android layout scrollview touch-event


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-07-10
      • 1970-01-01
      • 2011-04-05
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多