首页 > 其他分享 >【HarmonyOS】View点击穿透,层叠View点击事件控制

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

时间:2024-10-23 20:19:33浏览次数:8  
标签:触摸 100% HarmonyOS 点击 测试 节点 View

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

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

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

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

Demo示例:

@Entry
@Component
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示例:

@Entry
@Component
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!");
      })
    }
  }
}

标签:触摸,100%,HarmonyOS,点击,测试,节点,View
From: https://blog.51cto.com/u_17074705/12341909

相关文章

  • 【HarmonyOS】取消页面转场动画
    【HarmonyOS】取消页面转场动画问题背景:当A页面切换至B页面时,系统会自带左右进场退场的动画效果。一般来说,该效果是ok的,但是在特殊场景下,例如:A页面跳到B页面,又跳到C页面。C页面直接返回到A页面。正常不处理时,C到A会有两次页面切换的动画,最终才能展示到A页面。此时就需要能将B页面......
  • 【HarmonyOS】根据文本内容动态测算文本控件宽高
    【HarmonyOS】根据文本内容动态测算文本控件宽高问题背景:一般情况下,在鸿蒙里文本控件Text或者Span的宽高,我们都会设置固定宽高,或者根据内容自适应,不设置固定宽高。但是在特殊场景下,例如,父组件的宽高需要根据子组件的内容动态设置宽高。或者是文本控件根据内容会有行数变化。都需......
  • HarmonyOS:ArkUI最佳实践(1)ForEach循环渲染
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(MaoistLearning)➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/......
  • 点击左右箭头,中间内容切换
    <divclass="carousel-container"><divclass="carousel"><divclass="carousel-itemactive">Item1</div><divclass="carousel-item">Item2</div>......
  • 点击触发事件
    <%--CreatedbyIntelliJIDEA.User:26945Date:2024/10/23Time:16:57TochangethistemplateuseFile|Settings|FileTemplates.--%><%@pagecontentType="text/html;charset=UTF-8"language="java"%><html......
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —IAP Kit(3)
    1.问题描述:已经购买订阅型物品,未调用finishPurchase接口,重新购买该物品,createPurchase接口返回的是001860001错误:Systeminternalerror,建议返回1001860051错误,这样方便业务统一处理。解决方案:关于1001860001内部错误的错误码提示为:Systeminternalerror.IAP_RESPONSE_RESUL......
  • SlugDungeon Apple Model-View-Controller
    SlugDungeonAssignment2Semester2,2024CSSE7030Duedate:25October2024,15:00GMT+101IntroductionInthisassignment,youwillimplementagameinwhichaplayermustescapefromadungeonofslugs.Unlikeassignment1,inthisassignmentyouwillbe......
  • EAS_WEB如何查找点击前台按钮后,调用的后台方法,
    第一种方法:正常有说明的可以直接从后台实现找到第二种方法,找不到的,类似如下,我们可以通过debugger的方式,找到对应的实现,具体路径org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#registerHandlerMethod,没有registerHandlerMethod方法的话,可......
  • CogView3---CogView-3Plus-微调代码源码解析-五-
    CogView3&CogView-3Plus微调代码源码解析(五).\cogview3-finetune\sat\sgm\modules\encoders\__init__.py请提供需要注释的代码。.\cogview3-finetune\sat\sgm\modules\__init__.py#从当前包的编码器模块导入GeneralConditioner类from.encoders.modulesimportGeneral......
  • CogView3---CogView-3Plus-微调代码源码解析-四-
    CogView3&CogView-3Plus微调代码源码解析(四).\cogview3-finetune\sat\sgm\modules\diffusionmodules\sampling_utils.py#导入数学库以进行数学运算importmath#导入PyTorch库以进行张量操作importtorch#从SciPy库导入积分函数fromscipyimportintegrate#从......