1

我要完成的场景如下:我有主布局 - 这是一个框架布局,在其中我有包含不同视图的线性布局。我希望全局 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 

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

4

2 回答 2

3

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

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

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

于 2012-11-09T17:44:52.263 回答
1

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

一个 View 只能有一个 OnTouchListener。当您设置新的侦听器时,您正在覆盖以前的侦听器。

于 2012-11-09T17:36:26.467 回答