2010-01-26 127 views
1

我有一个包含五个TextView的布局。当用户点击五个TextView中的任何一个时,它会做同样的事情:打开另一个活动。所以,五个TextView的OnClickerListener行为是一样的。 是否有可能我只将OnClickListerner添加到一个视图,例如布局,所以我不必将OnClickListerner添加到五个TextView中的每一个? 换句话说,如果没有一个子组件接收到CLICK事件,CLICK事件是否会传递给它们的父级布局?将事件传递给父视图?

谢谢。

+0

据我所知,您可以将OnClickerListener添加到几乎任何视图中。 – m6tt 2010-01-26 09:39:34

回答

1

我不相信有另一个地方可以自动接收来自布局中所有视图的点击输入。

您可以使用自定义的OnClick行为来扩展TextView。

或者,只需将相同的OnClickListener实例传递给所有文本框即可。

+0

此行为不正确。看到我的答案。事件冒起来了。 – 2012-08-24 03:41:27

4

以上来自Mayra的回答不正确。如果最低级别的控件(即您的案例中的textview)确实有而不是有与之关联的OnClickListener(),则单击事件会“向上冒泡”到父级。它将继续这种方式,直到找到一个实现OnClickListener的视图;否则点击被忽略(我假设)。我多次利用了这种行为。

同时,请参阅这篇文章了解详情:Stackoverflow Question 8135032

我知道这是一个非常古老的职位,但要纠正它为别人在这问那绊倒。

1

它可能并非如此,但我最近花了几个小时试图让TextView将它的点击事件传播给它的父项。我没有成功,因为显然如果你设置MovementMethod tv.setMovementMethod(LinkMovementMethod.getInstance()); 它会抓住“冒泡”并且永远不会到达它的父母。

相关问题