【问题标题】:android why swipe on a textview will trigger onclick event?android为什么在textview上滑动会触发onclick事件?
【发布时间】:2018-04-30 09:40:11
【问题描述】:

我正在使用 Android Studio 中的默认项目模板。当我在 textView 上滑动时,onClick 事件将被触发。这是设计的行为还是我做错了什么?

【问题讨论】:

  • 究竟是如何被点击的?您在文本上设置了任何侦听器?
  • 是的,我在 textview 上设置了一个 onclick 监听器。如果我从左到右或从右到左移动手指,onclick 事件将被触发,就像它通过单击触发一样。
  • 我认为应该是这样的。如果你真的想fix 这种行为你应该看看TouchListenerdo same stuff as onClick 但在ACTION_DOWN 里面。无论如何,除非您要在那里执行更复杂的操作,否则我认为这不会很麻烦:)
  • 我会说这很正常,但取决于您的实施。显示一些代码。如果您有某种机制在滑动的情况下消耗点击,例如ViewPager,则不会在该 TextView 上调用点击。
  • 要理解问题,您必须考虑什么是点击事件。所以它是:手指向下+手指向上。所以基本上滑动是相同的手指向下 + 手指移动 + 手指向上。这意味着每次滑动都是一次点击。

标签: android onclick swipe


【解决方案1】:

根据我的经验,OnClick 会被触发,因为当您将手指放在 textView 上时,它的 ACTION_DOWN 方法会在内部调用,而在您移开手指滑动之后,它的 ACTION_UP 方法会在内部调用。因此,每当调用这两个组合时,它都会调用onClick 方法。因此,当您触摸(ACTION_DOWNtextView 并向左/向右滑动并将手指移到外面(没有ACTION_UP 事件)时,它不会被调用,因为它的ACTION_UP 未被调用。

PS。这不是onClick 的官方定义/工作方式......这就是我的经验。

【讨论】:

  • 更大的问题是我无法在父 ViewGroup 上实现滑动手势,同时在 textview 上正确实现 onClicklistener。
  • 我认为这是一个单独的问题......这只是onClick的工作......你总是可以实现textView的onTouch。您的问题有很多答案(您在 cmets 中提到的)。
  • @StoneLai 检查this out..
【解决方案2】:

我的解决方案是扩展父视图组并检查 onInterceptTouchEvent 中的运动事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-05
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 2014-09-18
    相关资源
    最近更新 更多