将事件传递给父视图?

时间:2010-01-26 00:10:29

标签: java android

我有一个包含五个TextView的布局。当用户单击五个TextView中的任何一个时,它将执行相同的操作:打开另一个活动。因此,五个TextView的OnClickerListener行为是相同的。 是否有可能只将OnClickListerner添加到一个视图,例如要布局,所以我不必为每个五个TextView添加OnClickListerner? 换句话说,如果没有子组件收到CLICK事件,那么CLICK事件是否会传递给他们的父组件,即布局?

感谢。

3 个答案:

答案 0 :(得分:5)

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

另外,请参阅此帖子了解更多详情:Stackoverflow Question 8135032

我知道这是一篇非常古老的帖子,但是想要纠正其他任何偶然发现这个问题的人。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

情况可能并非如此,但我最近花了几个小时试图让TextView将其点击事件传播到其父级。我没有成功,因为显然你设置了MovementMethod tv.setMovementMethod(LinkMovementMethod.getInstance()); 它会赶上"冒泡"永远不会到达其父母。