我有一个包含五个TextView的布局。当用户单击五个TextView中的任何一个时,它将执行相同的操作:打开另一个活动。因此,五个TextView的OnClickerListener行为是相同的。 是否有可能只将OnClickListerner添加到一个视图,例如要布局,所以我不必为每个五个TextView添加OnClickListerner? 换句话说,如果没有子组件收到CLICK事件,那么CLICK事件是否会传递给他们的父组件,即布局?
感谢。
答案 0 :(得分:5)
Mayra的上述答案不正确。如果最低级别控件(即您的情况下为textview)不具有与之关联的OnClickListener(),则单击事件会“冒泡”到父级。它将以这种方式继续,直到找到实现OnClickListener的视图;否则点击被忽略(我假设)。我多次利用这种行为。
另外,请参阅此帖子了解更多详情:Stackoverflow Question 8135032
我知道这是一篇非常古老的帖子,但是想要纠正其他任何偶然发现这个问题的人。
答案 1 :(得分:1)
我不相信还有另一个地方可以自动接收布局中所有视图的点击输入。
您可以使用自定义OnClick行为扩展TextView。
或者,只需将相同的OnClickListener实例传递给所有文本框。
答案 2 :(得分:1)
情况可能并非如此,但我最近花了几个小时试图让TextView将其点击事件传播到其父级。我没有成功,因为显然你设置了MovementMethod
tv.setMovementMethod(LinkMovementMethod.getInstance());
它会赶上"冒泡"永远不会到达其父母。