• 【Harmony OS】【FAQ】鸿蒙问题合集2


     1、问题描述:

    swiper嵌套子组件,子组件里面有PanGesture,有冲突swiper消费了滑动手势,该如何解决?

    demo如下:

    1. // @ts-nocheck
    2. @Entry
    3. @Component
    4. struct PanGestureExample {
    5.   @State offsetX: number = 0
    6.   @State offsetY: number = 0
    7.   build() {
    8.     Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) {
    9.       Text('PanGesture offset:\nX: ' + this.offsetX + '\n' + 'Y: ' + this.offsetY)
    10.     }
    11.     .height(100).width(200).padding(20).border({ width: 1 }).margin(80)
    12.     .translate({ x: this.offsetX, y: this.offsetY, z: 5 })
    13.     .gesture(
    14.     PanGesture({})
    15.       .onActionStart((event: GestureEvent) => {
    16.         console.info('Pan start')
    17.       })
    18.       .onActionUpdate((event: GestureEvent) => {
    19.         this.offsetX = event.offsetX
    20.         this.offsetY = event.offsetY
    21.       })
    22.       .onActionEnd(() => {
    23.         console.info('Pan end')
    24.       })
    25.     )
    26.   }
    27. }

    解决方案

    建议在PhotoView的父组件Swiper上设置priorityGesture属性,默认情况下,子组件优先于父组件识别手势,当父组件配置priorityGesture时,父组件优先于子组件进行识别。参考如下代码:

    1. Swiper()
    2. ...
    3. .priorityGesture(
    4. TapGesture()
    5.   .onAction(() => {
    6.   }), GestureMask.IgnoreInternal
    7. )


    2、问题描述:

    eTS scroll 组件,设置scrollable(ScrollDirection.Horizontal)时,为什么横向滚动滚动条不显示?

    demo如下:

    1. @Entry
    2. @Component
    3. struct scrollerPage {
    4.   scroller: Scroller = new Scroller()
    5.   private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    6.   build() {
    7.     Stack({ alignContent: Alignment.TopStart }) {
    8.       Scroll(this.scroller) {
    9.         Row({ space: 20 }) {
    10.           Row().width(150).height(50).backgroundColor(0xAFEEEE)
    11.           Row().width(150).height(50).backgroundColor(0x00FFFF)
    12.         }.width("200%").height(52).border({ width: 1 }).margin({ top: 20 })
    13.       }
    14.       .scrollable(ScrollDirection.Horizontal).scrollBar(BarState.On)
    15.       .scrollBarColor(Color.Red).scrollBarWidth(30)
    16.       .onScroll((xOffset: number, yOffset: number) => {
    17.         console.info(xOffset + ' ' + yOffset)
    18.       })
    19.       .onScrollEdge((side: Edge) => {
    20.         console.info('To the edge')
    21.       })
    22.       .onScrollEnd(() => {
    23.         console.info('Scroll Stop')
    24.       })
    25.     }.width('100%').height('100%').backgroundColor(0xDCDCDC)
    26.   }
    27. }

    解决方案

    横向的Scroll是没有滑动条显示的,如果需要可以用ScrollBar组件自定义

    js中类似于scrollview是list和list-item组件联合使用,示例如下:

    1、对应hml中遍历js中定义的imageList数据:

    1. <list class="text_container">
    2. <list-item type="listItem" for="{{imageList}}">
    3.   <image class="img" src="{{$item.value}}">image>
    4. list-item>
    5. list>

    2、对应js中的imageList定义:

    1. data: {
    2. imageList: [{value: "/common/1.jpg"}, {value: "/common/2.jpg"}, {value: "/common/3.jpg"}, {value: "/common/4.jpg"}],
    3. }

    3、可将步骤1中image标签改为div等标签自行定义

    4、默认为纵向,横向、纵向属性分别如下:

    1. style="flex-direction:row"
    2. style="flex-direction:column"


    3、问题描述:

    设备的DVID有什么方式可以校验是否是真实的设备吗?

    解决方案:

    DVID不是某个设备的ID,是指由同一个鸿蒙账号的多个设备组成一个超级终端后的虚拟ID

    相关参考链接:文档中心

     

    欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh 

  • 相关阅读:
    halcon 车牌识别
    拆解现货黄金隔夜利息计算公式
    【工具软件】mediamtx——网页、vue3项目中播放 rtsp 视频流(支持265转码)
    聚类算法模型评价指标
    spring framework notes
    【建议背诵】软考高项考试案例简答题汇总~(10)
    mysql的基本知识点
    常用文件名后缀一览
    分层架构理论基础
    知识图谱(Knowledge Graph)- Neo4j 5.10.0 使用 - CQL - 太极拳传承谱系表
  • 原文地址:https://blog.csdn.net/weixin_44708240/article/details/126155023