HarmonyOS 鸿蒙Next swiper设置displayCount为3时,数据源问题导致位置偏移

发布于 1周前 作者 caililin 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next swiper设置displayCount为3时,数据源问题导致位置偏移

如标题所述,displayCount设置3时可能存在bug

7 回复
做了个示例,你看看,循环放了29个数字:

  [@State](/user/State) unit: number = 50;

  build() {

    Column({ space: 5 }) {

      Swiper(this.swiperController) {

        LazyForEach(this.data, (item: string) => {

          Text(item).width(this.unit).height(160).border({width: 2, color: Color.Red})

            .backgroundColor(0xAFEEEE).textAlign(TextAlign.Center).fontSize(30)

        }, item => item)

      }

      .width(this.unit * 5).position({x: -this.unit * 2 / 3, y: 0})

      .cachedCount(4)

      .index(1)

      .autoPlay(true)

      .interval(4000)

      .indicator(true)

      .loop(true)

      .duration(1000)

      .displayCount(5)

      .itemSpace(3)

      .curve(Curve.Linear)

      .onChange((index: number) => {

        let tag: string = 'onChange()==';

        Logger.info(this.Tag+tag, `-------------------- enter, index: ${index}`);

        console.info(index.toString())

      })

    }.width('100%').height("100%")

    .onAreaChange((oldArea, newArea) => {

      this.unit = new Number(newArea.width).valueOf() * 3 / 11;

    })

    .margin({ top: 5 })

  }

Swiper-demo.png

用API中的示例跑了一下,设置 .displayCount(3) 在 .onChange((index: number) => { }) 用日志显示 index 没有错位;这样配置时,index = 0 时 UI 显示索引为 0,1,2 的三个数据,中间是索引为1的数据,此组件并未设计为索引目标居中显示,组件是滑动视图容器,提供子组件滑动轮播显示的能力,所以不算是bug吧。如果你看到的不一样,发一下如何跟踪索引的。

设置数据多一点时就很明显了,注意各个属性得和我一致才能出现这种情况。我的目的是设计一个一屏完全显示3个选项,另外左右各露出三分之各选项(用premargin和nextmargin)的需求,最会发现array里面的数据的index和swiper的监听的index不一致。

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

控制Swiper的宽高即可,下面贴了示例。

同问。请问你解决了吗? 这就是BUG,count=9,displayCount=3最右边的9滑动不到中间还不是BUG吗

针对HarmonyOS 鸿蒙Next中swiper设置displayCount为3时数据源问题导致的位置偏移,这通常不是由单一因素引起的。首先,确认swiper的子View个数是否充足,当子View个数小于displayCount时,可能会出现滑动空白或位置偏移的问题。其次,检查swiper的宽高设置,以及是否通过某些动态属性影响了swiper的布局或滑动逻辑。

此外,有开发者反馈在特定情况下(如数据源较多时),swiper的index可能会出现错位,表现为所有元素index都减1。这可能是由于swiper组件在处理数据源时的内部逻辑问题,或者是数据绑定和渲染过程中的异常。

为解决这个问题,可以尝试调整swiper的相关属性设置,确保数据源的正确性和稳定性。同时,关注鸿蒙系统的官方更新和修复,以获取可能的补丁或解决方案。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部