【HarmonyOS】View点击穿透,层叠View点击事件控制

embedded/2024/10/20 5:27:36/

【HarmonyOS】View点击穿透,层叠View点击事件控制

问题背景:
在HarmonyOS中,经常会有层叠的View的布局,当碰到需要穿透的布局需求。就需要能控制View对点击事件的处理。

方案一,使用touchable:
目前虽然函数已提示过时,会有斜线,但是改方法比较简单。

在view节点设置:
touchable(true) 可接受点击
touchable(false) 不处理点击,点击事件就会有穿透效果。

Demo示例:




struct Index {build() {Stack(){Column(){// B布局.}.width("100%").height("100%").onClick(()=>{console.log("debugTest", "click B!");})Row(){// A布局。当父布局是stack,包裹的布局中,最下面的view会在最上层。此时A会遮挡B的点击事件。}.width("100%").height("100%").touchable(false).onClick(()=>{console.log("debugTest", "click A!");})}}
}

方案二,使用hitTestBehavior

在view节点设置hitTestBehavior

HitTestMode为枚举类型,有三个值,分别如下:
Default 0
默认触摸测试效果,自身和子节点都响应触摸测试,但会阻塞兄弟节点的触摸测试。

Block 1
自身响应触摸测试,阻塞子节点和兄弟节点的触摸测试。

Transparent 2
自身和子节点都响应触摸测试,不会阻塞兄弟节点的触摸测试。

None 3
自身不响应触摸测试,不会阻塞子节点和兄弟节点的触摸测试。

Demo示例:




struct Index {build() {Stack(){Column(){// B布局.}.width("100%").height("100%").onClick(()=>{console.log("debugTest", "click B!");})Row(){// A布局。当父布局是stack,包裹的布局中,最下面的view会在最上层。此时A会遮挡B的点击事件。}.width("100%").height("100%").hitTestBehavior(HitTestMode.Transparent).onClick(()=>{console.log("debugTest", "click A!");})}}
}

http://www.ppmy.cn/embedded/43485.html

相关文章

用大模型搭建一个自己的新闻小助手

背景 信息快速增长的时代,及时获取到有价值的资讯是一件很必要的事情。已经有各类新闻app和获取信息的渠道了,为什么还需要在构建一个小助手来获取新闻资讯呢?其实原因很简单各类新闻app服务的是具体一类人群,个人和人群还是有偏…

某勾求职网逆向分析

搜索目标: aHR0cHM6Ly93d3cubGFnb3UuY29tL3duL2pvYnM/cG49MSZweD1kZWZhdWx0JmZyb21TZWFyY2g9dHJ1ZSZrZD0lRTYlOTUlQjAlRTYlOEQlQUUlRTUlODglODYlRTYlOUUlOTA= 抓包分析 请求和返回都是加密的 请求头部也有未知参数 跟栈分析 请求和返回是一个AES加密,加密的KEY是session s…

三前奏:获取/ 读取/ 评估数据【数据分析】

各位大佬好 ,这里是阿川的博客 , 祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 前面的博客 数据分析—技术栈和开发环境搭建 …

列表元素添加的艺术:从单一到批量

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、向列表中添加单一元素 1. append方法 2. insert方法 三、向列表中添加批量…

React hooks - useRef

useRef 用法特点注意事项 用法 useRef 函数返回一个可变的 ref 对象,该对象只有一个 current 属性。可以在调用 useRef 函数时为其指定初始值。并且这个返回的 ref 对象在组件的整个生命周期内保持不变。 // 1. 导入 useRef import { useRef } from react // 2. 调…

ubuntu 配置用户登录失败尝试次数限制

前言: 通过修改pam配置来达到限制密码尝试次数! 1:修改 /etc/pam.d/login 配置(这里只是终端登录配置,如果还需要配置SSH远程登录限制,只配置下面的 /etc/pam.d/pam.d/common-auth 即可) vim…

Java多线程(02)

一、如何终止线程 终止线程就是要让 run 方法尽快执行结束 1. 手动创建标志位 可以通过在代码中手动创建标志位的方式,来作为 run 方法的执行结束条件; public static void main(String[] args) throws InterruptedException {boolean flag true;Thr…

用例设计需遵循哪些规范标准?

用例设计需要遵循一些规范标准,以确保设计的用例具有良好的质量和可维护性。以下是一些常见的规范标准: 1.明确的目标和范围:用例应该有明确的目标和范围,清楚地描述系统需要实现的功能或行为。 2.完整性:用例应该覆盖…