Android中focusableInTouchMode会导致第一次点击事件失效

我们很多时候会对某些View设置点击事件,但是,当对这个View同时设置了focusableInTouchMode=true时,第一次点击事件会被消费为为此View获取焦点。

xml 复制代码
<View
   	android:id="@+id/v_click"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:focusableInTouchMode="true"
    android:background="@color/cardview_dark_background"
    />

创建一个View,并同时指定了 android:focusableInTouchMode="true",在Activity代码中对View设置点击事件。

kotlin 复制代码
var count = 0

findViewById<View>(R.id.v_click)?.let {
     it.setOnFocusChangeListener { v, hasFocus -> Log.e("V_CLICK", "hasFocus  ${hasFocus}") }
     it.setOnClickListener {
         Log.e("V_CLICK", "click ${++count}")
     }
 }

发现第一次点击,LogCat显示:

bash 复制代码
V_CLICK  E  hasFocus  true

再次点击,才出现点击事件的Log:

bash 复制代码
V_CLICK  E  click 1
相关推荐
予枫的编程笔记几秒前
【Java 进阶3】Kafka从入门到实战:全面解析分布式消息队列的核心与应用
java·分布式·kafka
Wang15308 小时前
jdk内存配置优化
java·计算机网络
0和1的舞者9 小时前
Spring AOP详解(一)
java·开发语言·前端·spring·aop·面向切面
Wang15309 小时前
Java多线程死锁排查
java·计算机网络
梦幻通灵9 小时前
Mysql字段判空实用技巧
android·数据库·mysql
小小星球之旅9 小时前
CompletableFuture学习
java·开发语言·学习
jiayong2310 小时前
知识库概念与核心价值01
java·人工智能·spring·知识库
皮皮林55110 小时前
告别 OOM:EasyExcel 百万数据导出最佳实践(附开箱即用增强工具类)
java
Da Da 泓10 小时前
多线程(七)【线程池】
java·开发语言·线程池·多线程
To Be Clean Coder11 小时前
【Spring源码】getBean源码实战(三)
java·mysql·spring