Android:让父视图处理点击事件

6
我有一个包含几个项目的RelativeLayout:一个ImageView和几个小的TextView。在功能上,我希望当单击RelativeLayout中的任何内容时都触发相同的单击事件。在视觉上,我希望看到RelativeLayout的背景色改变,以显示整个布局(或“项目”)正在被单击。
我的问题是,每次我单击TextView时,单击事件不会传播回父视图,因此背景颜色不会改变。我该怎么做?

你能否发布你的代码,以便更好地了解你需要什么。 - mohammed momn
2个回答

9

确保你的RelativeLayout中没有为任何子元素分配OnClickListener通常就足以防止它们接收点击事件。同时,检查是否有android:clickable="true"被设置了。然后,一旦为RelativeLayout分配了OnClickListener,它就应该可以获取所有的点击事件。


感谢您的快速回复。我设置了一个点击事件来查看哪些项目被点击,结果发现这会强制文本视图接收点击事件(忽略clickable="false")。 - Sababado
1
非常感谢你,兄弟。这个问题真的让我很困扰。很容易忽略android:clickable="true"的存在。移除它解决了我的问题。 - Akash Raghav

0

对于一些具有内部OnClickListener且您无法轻松删除其OnClickListener实现的项目,例如SwitchComat,您可以在父布局中设置

android:descendantFocusability="blocksDescendants"

通过将此属性添加到父视图,无论是否具有onClickListner,都不会向任何子项发送点击事件。

更多关于descendantFocusability的信息


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接