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
相关推荐
yaoxin521123几秒前
286. Java Stream API - 使用Stream.iterate(...)创建流
java·开发语言
qq_12498707533 分钟前
基于springboot的鸣珮乐器销售网站的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·spring·毕业设计·计算机毕业设计
海南java第二人4 分钟前
SpringBoot核心注解@SpringBootApplication深度解析:启动类的秘密
java·spring boot·后端
win x8 分钟前
Redis集群
java·数据库·redis
r_oo_ki_e_8 分钟前
java23--异常
java·开发语言
qq_124987075319 分钟前
基于Spring Boot的“味蕾探索”线上零食购物平台的设计与实现(源码+论文+部署+安装)
java·前端·数据库·spring boot·后端·小程序
编程之路从0到121 分钟前
React Native 之Android端 Bolts库
android·前端·react native
爬山算法23 分钟前
Hibernate(38)如何在Hibernate中配置乐观锁?
android·java·hibernate
江上月51327 分钟前
JMeter中级指南:从数据提取到断言校验全流程掌握
java·前端·数据库
晨旭缘28 分钟前
零基础后端入门:JDK21 + PostgreSQL+Java项目
java·数据库·postgresql