如何使用数据绑定将点击侦听器设置为 LinearLayout

2024-05-15

我目前正在尝试将点击侦听器设置为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但对于其他视图来说没有任何问题?


您可以处理任何视图单击事件,如下所示:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用数据绑定将点击侦听器设置为 LinearLayout 的相关文章

随机推荐

  • 两个整数乘积的模

    我必须找到c c a b mod m a b c m 是 32 位整数 但 a b 可以超过 32 位 我正在尝试找出一种计算 c 的方法 而不使用 long 或任何 gt 32 位的数据类型 有任何想法吗 如果m是质数 事情可以简化吗 注
  • 用 C++ 生成 AST

    我正在用 C 制作一个解释器 到目前为止我已经有了词法分析器来生成标记 问题是我不确定如何生成 行走 解析树 我正在考虑使用数组数组来制作解析树 但我不确定如何以正确的顺序将标记实际插入到解析树中 我不确定是自上而下 左右还是自下而上 左右
  • Quarkus / CDI 和“java config”DI 定义

    我刚刚开始 quarkus 概念验证 容器启动时间太棒了 现在 我正在研究依赖注入部分 并找出选项 https quarkus io blog quarkus dependency injection https quarkus io bl
  • 为什么可以更改 const char* 变量的值?

    为什么下面的 C 代码可以工作 const char str NULL str test str test2 既然str是一个指向常量字符的指针 为什么我们可以给它分配不同的字符串文字呢 此外 我们如何保护str不被修改呢 例如 如果我们后
  • 没有端点在 net.pipe://localhost/ 上监听

    我有两个 WCF 服务托管在 Windows Server 2003 计算机上的单个 Windows 服务中 如果 Windows 服务需要访问任一 WCF 服务 例如发生定时事件时 它将使用公开的五个命名管道端点之一 不同的服务协定 该服
  • 如何使用 winforms 在 vb.net 中制作大型按钮网格(24x20 或类似)?

    我正在 vb net WinForms 中制作一个座位预订系统 我需要用户能够选择他们想要使用的座位并改变颜色 这样他们就可以知道它已选择 我开始尝试使用按钮 但 480 个按钮严重减慢了表单的加载时间 然后我尝试了在行 列中带有按钮的数据
  • onclick 函数上的 CSS 选择器

    有没有办法让CSS选择器onclick function 您可以在onclick https stackoverflow com questions 24365416 select element which have specific a
  • 快速约会算法

    我在一家咨询公司工作 大部分时间都在客户所在地 正因为如此 我很少见到同事 为了更好地了解彼此 我们将安排一个晚宴 会有很多小桌子 方便人们聊天 为了在聚会期间与尽可能多的不同的人交谈 每个人都必须每隔一段时间 比如每小时 换一张桌子 如何
  • Python:使用 string.format() 将单词大写

    是否可以使用字符串格式将单词大写 例如 user did such and such format user foobar 应该返回 Foobar 做了这样那样的事情 请注意 我很清楚 capitalize 但是 这是我正在使用的代码 非常
  • 通过推送通知唤醒

    Suppose 有一些对象 例如 一个数组a 和依赖于对象的条件 例如 a empty 当前线程以外的某些线程可以操作该对象 a 因此条件评估值的真实性会随着时间的推移而变化 如何让当前线程在代码中的某个时刻休眠 并在条件满足时通过推送通知
  • 片段内容下方是否存在持久性 BottomSheet?

    Using a 持久底表 https material google com components bottom sheets html bottom sheets persistent bottom sheets 在一个协调器布局 htt
  • CakePHP 会话被写入 /tmp/ 而不是 /app/tmp/sessions/

    这里有类似的简单但未回答的问题 cakephp 会话 tmp sessions 中没有新文件 https stackoverflow com questions 24733151 cakephp session no new files i
  • 如何将 hls.js 与 React 结合使用

    我需要一些帮助来尝试弄清楚如何在 React 中使用 hls js 让我解释一下我必须从 api 获取 m3u8 的情况我能够使用基本的 html 使其工作
  • 什么是 API 密钥? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如今 我几乎在每个跨服务应用程序中都看到这个词 API 密钥到底是什么以及它的用途是什么 另外 公共 API 密钥和私有 API 密钥
  • IntelliJ:线程“主”java.lang.NoClassDefFoundError中的异常:org/apache/spark/sql/types/DataType

    附言 有一个类似的问题here https stackoverflow com questions 40287289 java lang noclassdeffounderror org apache spark logging 但那是在
  • 垃圾收集器如何在幕后工作来收集死对象?

    我正在阅读有关垃圾收集的内容 众所周知 垃圾收集会收集死亡对象并回收内存 我的问题是 Collector 如何知道任何对象已死亡 它使用什么数据结构来跟踪活动对象 我正在研究这个问题 我发现GC实际上会跟踪活动对象 并标记它们 每个未标记的
  • Linq to Entities 中的动态 where 子句 (OR)

    在文中here https stackoverflow com questions 9122220 dynamic where clause in linq to entities我学习了如何使用 Linq 的延迟执行来构建动态查询 但查询
  • 我如何选择特定的cookie?

    如何从响应中选择特定的 cookie 我收到的响应有 6 个 Set Cookie 行 但我只需要其中一些用于我的下一篇文章 HTTP 1 1 200 OK date Thu 05 Mar 2015 13 49 29 GMT cache c
  • C++中const对象位于哪个内存区域? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用数据绑定将点击侦听器设置为 LinearLayout

    我目前正在尝试将点击侦听器设置为LinearLayout查看在 xml使用数据绑定的布局文件 我已经设法让它在其他视图上很好地工作 比如Button or TextView 但由于某种原因 它不能与LinearLayout 这是我尝试的基本