我目前正在尝试将点击侦听器设置为LinearLayout
查看在.xml
使用数据绑定的布局文件。
我已经设法让它在其他视图上很好地工作,比如Button
or 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>
Where linearLayoutClicked
我的方法是在操作类中定义的:
public void linearLayoutClicked(View view) {
// specific logic
}
我也尝试过儿童视图和那些儿童视图clickable
and focusable
设置为 false 以及duplicateParentState
set to true
and false
.
该操作与在其他正常工作的视图上使用的操作完全相同。
这是一个错误还是我这样做不正确?为什么这不起作用LinearLayout
但对于其他视图来说没有任何问题?
您可以处理任何视图单击事件,如下所示:
-
创建处理点击事件的接口,如下所示:
interface OnClickHandlerInterface {
void onClick(View view)
}
-
在操作类中实现点击监听器,如下所示:
class MainActivity implements OnClickHanderInterface{
@Override
void OnClick(View view){
}
}
-
现在将此接口绑定到 XML 文件中:
<data>
<variable
name="clickHandler"
type=".OnClickHandlerInterface" />
</data>
-
现在使用绑定对象在操作类中注册此接口:
mActivityMainBinding.clickHandler = this
-
现在,在您想要设置点击监听器的任何地方设置 onClick。对你来说它是 LinearLayout:
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="72dp"
android:clickable="true"
android:focusable="true"
android:onClick="@{(v)-> clickHandler.onClick(v)}"
android:orientation="vertical">
</LinearLayout>
-
现在,当您的 LinearLayout 单击时,处理单击,您可以单击在操作类中实现的界面:
@Override
void OnClick(View view){
switch(view.getId()){
case R.id.linearLayout:
// Handler click and do some actions
break;
}
}
-
如上所述,您可以通过数据绑定获得布局点击。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)