【问题标题】:android touch listener on main layout from it's views从它的观点来看,主布局上的android触摸监听器
【发布时间】:2012-11-10 01:44:52
【问题描述】:

我试图完成的场景如下: 我有主布局 - 这是一个框架布局,在其中我有包含不同视图的线性布局。我希望全局 frameLayout 从子视图类接收触摸事件。

在每个子视图中,我都获取了全局 frameLayout 对象,并对其执行了 setOnTouchListener。然后,从 UI 中,当我触摸插入到内部 linearLayout 的最后一个视图时,我得到了触摸事件。但对于其他观点,我没有。

FramLayout
   LinearLayout
     View1    - not getting touch event 
     View2    - not getting touch event 
     View3    - not getting touch event 
     View4    - getting touch event 

有没有人遇到过类似的行为?

【问题讨论】:

  • 拥有更多声望点,您可以发布赏金点数并更快更好地回答您的问题,因为有更多人关注它。这是工作的微小努力

标签: android ontouchlistener android-framelayout


【解决方案1】:

嗯...没有代码,诊断起来有点棘手,但我怀疑这种情况 ->

您为 Framelayout 设置了 4 次 onTouchListener,但每次调用它时,它都会替换之前的 onTouchListener。这就是为什么你的最后一个 onTouchListener 是唯一一个似乎有效的原因。如果是这种情况,您可以改为使用您希望 FrameLayout 的 onTouchListener 执行的代码......并将其放在全局位置,以便每个子视图的 onTouch 将触发该全局函数。有意义吗?

另外,如果我的回答是正确的(以及其他回答过您问题的人),请您将我们的回答标记为正确吗?您可以通过单击我的答案左侧的空复选标记来做到这一点。它在数字(评级)的正下方

【讨论】:

    【解决方案2】:

    在每个子视图中,我获取全局 frameLayout 对象,并对其执行 setOnTouchListener。

    一个视图只能有一个 OnTouchListener。当你设置一个新的监听器时,你正在覆盖以前的监听器。

    【讨论】:

    • 大声笑,不错的变化。我读了你之前的回答,我就像......“嗯......不......看起来像吗?”
    • 是的,我读的太快了,一开始以为所有的视图都是嵌套的。由于我们同时写了答案,我认为相互赞成是有道理的。
    • 哇。我真的很感动,我现在要在这里更加活跃。谢谢你的灵感!!! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    相关资源
    最近更新 更多