Android View 初始化完成后,如果再调用measure再设置点击事件则点击事件会失效的解决方案

比如LinearLayout 或RecyclerView 我们在初始化完成并加载完数据后再次调用measure计算高度再setLayoutParams 会导致后面设置的点击事件失效。

比如:

        RecyclerView rv_select =dialog.findViewById(R.id.rv_select); //点击事件rv_select.setOnItemClickListener(new PopupAdapter.OnItemClickListener() {//....});// 重新测量一下rv_select的真实高度并限定最大值,注意!measure方法必须放在设置点击事件之后,否则点击事件会失效ViewGroup.LayoutParams params = rv_select.getLayoutParams();rv_select.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);params.height = Math.min(rv_select.getMeasuredHeight(), Tools.dp2px(mContext,290));rv_select.setLayoutParams(params);
解决方法:

RecyclerView初始化完成后再调用measure方法可能会导致item点击事件失效的原因是,measure方法会重新测量并布局RecyclerView的子项视图,这可能会破坏已设置的点击监听器。

要解决这个问题,可以尝试以下两种解决方案之一:

  1. 在调用measure方法之前先设置点击监听器: 将设置点击监听器的代码放在RecyclerView初始化完成之后、调用measure方法之前执行。这样,在调用measure方法后,点击监听器仍然有效。

示例代码:

   // RecyclerView初始化RecyclerView recyclerView = findViewById(R.id.recyclerview);// 设置点击监听器recyclerView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(View view, int position) {// 处理点击事件}});// 调用measure方法recyclerView.measure(widthMeasureSpec, heightMeasureSpec);

2.避免在初始化完成后再次调用measure方法: 如果没有必要再次调用measure方法,请确保只在初始化阶段调用一次measure方法。如果需要进行布局更新,可以考虑使用其他方法,如requestLayout()或invalidate()。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/18423.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php5.6的yum安装

目录 1. 卸载老版本php5.4 2. 检查还有没有php 3.安装扩展源 4. 安装remi源 5. 安装yum-config-manager管理工具 6. 安装php 7. 安装php进程管理器 8. 开启php-fpm 9.查看安装的包,查看版本 1. 卸载老版本php5.4 rpm -qa | grep php* yum remove php* 2.…

深度学习:使用全连接神经网络FCN实现MNIST手写数字识别

1 引言 本项目构建了一个全连接神经网络(FCN),实现对MINST数据集手写数字的识别,没有借助任何深度学习算法库,从原理上理解手写数字识别的全过程,包括反向传播,梯度下降等。 2 全连接神经网络介绍 2.1 什么是全连接…

maven引入本地jar包的简单方式【IDEA】【SpringBoot】

前言 想必点进来看这篇文章的各位,都是已经习惯了Maven从中央仓库或者阿里仓库直接拉取jar包进行使用。我也是🤡🤡。 前两天遇到一个工作场景,对接三方平台,结果对方就是提供的一个jar包下载链接,可给我整…

SpringBoot使用MyBatis Plus + 自动更新数据表

1、Mybatis Plus介绍 Mybatis,用过的都知道,这里不介绍,mybatis plus只是在mybatis原来的基础上做了些改进,增强了些功能,增强的功能主要为增加更多常用接口方法调用,减少xml内sql语句编写,也可…

python使用selenium 打开谷歌浏览器闪退, 怎么解决

问题描述: 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 使用 Selenium 操作 Chrome 浏览器, Chrome 浏览器闪退 问题解决: 可能是以下几个方面出现了问题: 1. Chromedriver 版本与 Chrome 浏览器版本不匹配 你需要确保你正在…

安卓:JzvdStd——网络视频播放器

目录 一、JzvdStd介绍 JzvdStd的特点和功能: JzvdStd常用方法: 二、JzvdStd使用 1、补充知识: 例子: MainActivity : VideoPageAdapter : activity_main: video_page: …

第十次CCF计算机软件能力认证

第一题:分蛋糕 小明今天生日,他有 n 块蛋糕要分给朋友们吃,这 n 块蛋糕(编号为 1 到 n)的重量分别为 a1,a2,…,an。 小明想分给每个朋友至少重量为 k 的蛋糕。 小明的朋友们已经排好队准备领蛋糕,对于每个朋…

Blazor前后端框架Known-V1.2.9

V1.2.9 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行。 Gitee: https://gitee.com/known/KnownGithub:https://github.com/known/Known 概述 基于C#和Blazor…

UE4 unlua学习笔记

将这三个插件放入Plugins内并重新编译 创建一个BlueprintLibrary,声明一个全局函数 在这里声明路径 点击Create Lua Template 在Content的Script即可生成对应的lua文件打开它! 显示以上lua代码 打印Hello Unlua 创建该UI,就会在创建UI的Con…

Flutter-基础Widget

Flutter页面-基础Widget 文章目录 Flutter页面-基础WidgetWidgetStateless WidgetStateful WidgetState生命周期 基础widget文本显示TextRichTextDefaultTextStyle 图片显示FlutterLogoIconImageIamge.assetImage.fileImage.networkImage.memory CircleAvatarFadeInImage 按钮R…

火山引擎DataLeap如何解决SLA治理难题(二):申报签署流程与复盘详解

申报签署流程详解 火山引擎DataLeap SLA保障的前提是先达成SLA协议。在SLA保障平台中,以 申报单签署的形式达成SLA协议。平台核心特点是 优化了SLA达成的流程,先通过 “系统卡点计算”减少待签署任务的数量,再通过 “SLA推荐计算”自动签署部…

【Linux】网络基础

🍎作者:阿润菜菜 📖专栏:Linux系统网络编程 文章目录 一、协议初识和网络协议分层(TCP/IP四层模型)认识协议TCP/IP五层(或四层)模型 二、认识MAC地址和IP地址认识MAC地址认识IP地址认…

代码随想录算法训练营第五十七天|动态规划part17|647. 回文子串 ● 516.最长回文子序列● 动态规划总结篇

647. 回文子串 Palindromic Substrings - LeetCode dp[i][j] [i,j]范围内的子串是否是回文子串 1.i j 2.i j相差1 3. j - 1 > i dp[i - 1][j - 1] if (s[i] s[j]) if &#xff08;j - i < 1) dp[i][j] true; res; else if (dp[i - 1][j - 1] true) dp[i][j] true; …

基于Java的闲置物品管理系统(源码+文档+数据库)

很多在校学生经常因为冲动或者因为图一时的新鲜,购买了很多可能只是偶尔用一下的物品&#xff0c;大量物品将会闲置&#xff0c;因此&#xff0c;构建一个资源共享平台&#xff0c;将会极大满足师院学生的需求,可以将其闲置物品挂在资源共享平台上让有需要的学生浏览&#xff0…

Linux【网络基础】数据链路层IP协议技术补充DNSDHCP

文章目录 一、数据链路层&#xff08;1&#xff09;数据链路层与网络层的关联&#xff08;2&#xff09;局域网通信原理&#xff08;3&#xff09;以太网协议&#xff08;4&#xff09;ARP协议 二、NAT协议三、NAPT协议四、ICMP协议五、DNS六、DHCP 一、数据链路层 &#xff0…

SSL单向认证和双向认证分析

SSL单向认证和双向认证 【ssl认证、证书】SSL双向认证和SSL单向认证的区别(示意图)

二、JVM-深入运行时数据区

深入运行时数据区 计算机体系结构 JVM的设计实际上遵循了遵循冯诺依曼计算机结构 CPU与内存交互图&#xff1a; 硬件一致性协议&#xff1a; MSI、MESI、MOSI、Synapse、Firely、DragonProtocol 摩尔定律 摩尔定律是由英特尔(Intel)创始人之一戈登摩尔(Gordon Moore)提出来…

配置GIt账号、配置公钥

1.设置账号和邮箱 打开终端输入以下命令&#xff1a; git config --global --unset-all user.name git config --global --unset-all user.email然后输入以下命令来设置新的账号和邮箱&#xff1a; git config --global user.name "your_username" git config --glo…

1. 简述静态网页和动态网页的区别。2. 简述 Webl.0 和 Web2.0 的区别。

1.静态网页和动态网页的区别 静态网页是指在服务器存储的网页内容保持不变&#xff0c;不会根据用户的请求或其他条件而改变。它的内容是固定的&#xff0c;无法根据用户的不同需求进行个性化或实时更新。静态网页一般由HTML、CSS和JavaScript等静态资源组成&#xff0c;打开速…

Stable Diffusion AI绘画学习指南【常用模型,采样器介绍】

常用采样器、目前有20个采样步骤越多每个步之间的降噪越小&#xff0c;减少采样过程中的截断误差&#xff0c;结果越好 学微分方程求解器 Euler&#xff08;最简单的采样器&#xff0c;采样过程中不加随机噪声&#xff0c;根据采样计划来执行每个步骤中的噪声&#xff0c;并使…