gpt4 book ai didi

android - 如何使用数据绑定(bind)将点击监听器设置为 LinearLayout

转载 作者:太空宇宙 更新时间:2023-11-03 13:09:21 26 4
gpt4 key购买 nike

我目前正在尝试使用数据绑定(bind)将点击监听器设置为 .xml 布局文件中的 LinearLayout View 。

我已经设法让它在其他 View (如 ButtonTextView)上正常工作,但由于某些原因它无法与 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 是我在 Action 类中定义的方法:

public void linearLayoutClicked(View view) {
// specific logic
}

我也尝试过使用 subview 和那些将 clickablefocusable 设置为 false 以及将 duplicateParentState 设置为 的 subview >truefalse

该操作与在其他正常工作的 View 上使用的操作完全相同。

这是错误还是我做错了?为什么这对 LinearLayout 不起作用,但对其他 View 却没有任何问题?

最佳答案

您可以像下面这样处理任何 View 点击事件:

  1. 创建处理点击事件的接口(interface),如下所示:

    interface OnClickHandlerInterface {
    void onClick(View view)
    }
  2. 在操作类中实现点击监听器,如下所示:

    class MainActivity implements OnClickHanderInterface{
    @Override
    void OnClick(View view){
    }
    }
  3. 现在在 XML 文件中绑定(bind)此接口(interface):

    <data>
    <variable
    name="clickHandler"
    type=".OnClickHandlerInterface" />
    </data>
  4. 现在使用绑定(bind)对象在操作类中注册此接口(interface):

    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 单击时处理单击,您可以单击在操作类中实现的界面:

    @Override
    void OnClick(View view){
    switch(view.getId()){
    case R.id.linearLayout:
    // Handler click and do some actions
    break;
    }
    }
  7. 如上所述,您可以通过数据绑定(bind)获得布局点击。

关于android - 如何使用数据绑定(bind)将点击监听器设置为 LinearLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49579343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com