【发布时间】:2018-09-09 18:50:57
【问题描述】:
我目前正在尝试使用数据绑定为.xml 布局文件中的LinearLayout 视图设置点击监听器。
我已经设法让它在 Button 或 TextView 等其他视图上运行良好,但由于某种原因它不适用于 LinearLayout。
这是我尝试的最简单的部分,但我仍然无法让它发挥作用:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="72dp"
android:clickable="true"
android:focusable="true"
android:onClick="@{action::linearLayoutClicked}"
android:orientation="vertical">
</LinearLayout>
linearLayoutClicked 是我在动作类中定义的方法:
public void linearLayoutClicked(View view) {
// specific logic
}
我还尝试使用子视图以及将clickable 和focusable 设置为false 以及duplicateParentState 设置为true 和false 的子视图。
该操作与在其他正常工作的视图上使用的操作完全相同。
这是一个错误还是我做错了?为什么这对LinearLayout 不起作用,但对其他视图却没有任何问题?
【问题讨论】:
-
暂时忽略数据绑定。如果您删除
android:onClick()属性,并在您的LinearLayout上调用setOnClickListener(),您会得到您想要的结果吗? -
@CommonsWare 是的,代码内点击监听器在
LinearLayout上正常工作。 -
嗯...您可能会考虑查看由数据绑定生成的代码,并在您拥有
android:onClick属性时查看其中的内容。您所拥有的应该没问题,尽管您正在尝试的组合(通过非交互式View上的数据绑定注册的事件处理程序)可能尚未经过彻底测试。 -
使用
android:onClick="linearLayoutClicked"而不是android:onClick="@{action::linearLayoutClicked}"我试过并且它的工作原理 -
@Thomas 阅读我的示例,它已经在使用具有该值的该属性。
标签: android data-binding android-studio-3.0