我目前正在尝试使用数据绑定将点击侦听器设置为.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以及repeatParentState设置为true和false的那些子视图.
该 *** 作与在其他视图上正常使用的 *** 作完全相同.
这是错误还是我做错了?为什么这对linearLayout不起作用,但对其他视图却没有任何问题呢?
解决方法:
您可以处理以下任何视图点击事件.希望能帮助到你!
1)创建如下所示的处理单击事件的界面.
interface OnClickHandlerInterface { voID onClick(VIEw vIEw)}
2)在动作类中实现点击监听器,如下所示
class MainActivity implements OnClickHanderInterface{ @OverrIDe voID OnClick(VIEw vIEw){ }}
3)现在将此接口绑定到XML文件中.
<data> <variable name="clickHandler" type=".OnClickHandlerInterface" /></data>
4)现在使用绑定对象在 *** 作类中注册此接口
mActivityMainBinding.clickHandler = this
5)现在,在要设置点击侦听器的任何位置上设置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>
6)现在,当您单击linearLayout时处理单击,您可以单击在 *** 作类中实现的接口.
@OverrIDevoID OnClick(VIEw vIEw){ switch(vIEw.getID()){ case R.ID.linearLayout: // Handler click and do some actions break; }}
6)如上所述,您可以通过数据绑定获得布局点击.希望它对您有用.
谢谢
快乐编码!
总结以上是内存溢出为你收集整理的android-如何使用数据绑定将Click侦听器设置为LinearLayout全部内容,希望文章能够帮你解决android-如何使用数据绑定将Click侦听器设置为LinearLayout所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)