基本上我想将单个 OnClickListener 附加到 ConstraintLayout 内的多个视图。
在迁移到 ConstraintLayout 之前,我可以在一个布局中添加一个侦听器的视图。现在它们与 ConstraintLayout 下的其他视图位于同一层。
我尝试将视图添加到 android.support.constraint.Group
并以编程方式向其添加 OnClickListener。
group.setOnClickListener {
Log.d("OnClick", "groupClickListener triggered")
}
然而,这似乎不适用于 ConstraintLayout 版本 1.1.0-beta2
我做错了什么,有没有办法实现这种行为,或者我是否需要将监听器附加到每个单独的视图?
原文由 Endzeit 发布,翻译遵循 CC BY-SA 4.0 许可协议
Group
中的ConstraintLayout
只是一个松散的视图关联AFAIK。它不是ViewGroup
,因此您将无法像视图位于ViewGroup
时那样使用单击侦听器。作为替代方案,您可以在代码中获取属于您的
Group
成员的 ID 列表,并明确设置点击监听器。 (我还没有找到关于此功能的官方文档,但我相信它只是滞后于代码发布。)请参阅 此处 有关getReferencedIds
的文档。爪哇:
在 Kotlin 中,您可以为此构建一个扩展函数。
科特林:
然后调用组上的函数:
更新
引用的 id 在 2.0.0-beta2 中不是立即可用的,尽管它们在 2.0.0-beta1 和之前的版本中。 “发布”上面的代码以在布局后获取引用 ID。这样的事情会起作用。
这应该适用于 2.0.0-beta2 之前的版本,因此您可以这样做而不必进行任何版本检查。