HarmonyOS 鸿蒙Next Swiper指示器显示错误

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

HarmonyOS 鸿蒙Next Swiper指示器显示错误
属性上已经设置不显示指示器了,UI上还是展示了出来。
 

Swiper(this.controller){
ForEach(this.titles, (subData: string, currentIndex: number) => {
MarketStockListItem({item: subData, currentIndex: currentIndex})
})
}
.onChange((index: number) => {
this.currentIndex = index;
})
.width('100%')
.displayCount(1, true)
.index($$this.currentIndex)
.autoPlay(false)
.indicator(false)
.cachedCount(6)
.loop(false)

更多关于HarmonyOS 鸿蒙Next Swiper指示器显示错误的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

可以使用indicator设置颜色透明,让它不显示。详细内容请参见:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/ts-container-swiper-V13


.indicator(Indicator.dot()

        .itemWidth(15)

        .itemHeight(15)

        .selectedItemWidth(15)

        .selectedItemHeight(15)

        .color('#00000000')

        .selectedColor('#00000000'))

设置透明是给您的替换方案,单独设置indicator也是可以生效的,这边没有复现您的问题,您用这个demo试试,参考demo:


// xxx.ets

class MyDataSource implements IDataSource {

  private list: number[] = []

  constructor(list: number[]) {

    this.list = list

  }

  totalCount(): number {

    return this.list.length

  }

  getData(index: number): number {

    return this.list[index]

  }

  registerDataChangeListener(listener: DataChangeListener): void {

  }

  unregisterDataChangeListener() {

  }

}

@Entry

@Component

struct SwiperExample {

  private swiperController: SwiperController = new SwiperController()

  private data: MyDataSource = new MyDataSource([])

  aboutToAppear(): void {

    let list: number[] = []

    for (let i = 1; i <= 10; i++) {

      list.push(i);

    }

    this.data = new MyDataSource(list)

  }

  build() {

    Column({ space: 5 }) {

      Swiper(this.swiperController) {

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

          Text(item.toString())

            .width('90%')

            .height(160)

            .backgroundColor(0xAFEEEE)

            .textAlign(TextAlign.Center)

            .fontSize(30)

        }, (item: string) => item)

      }

      .cachedCount(2)

      .index(1)

      .autoPlay(true)

      .interval(4000)

      .loop(true)

      .duration(1000)

      .itemSpace(0)

      // .indicator( // 设置圆点导航点样式

      //   new DotIndicator()

      //     .itemWidth(15)

      //     .itemHeight(15)

      //     .selectedItemWidth(15)

      //     .selectedItemHeight(15)

      //     .color(Color.Gray)

      //     .selectedColor(Color.Blue))

      .indicator(false)

      // .loop(false)

      // .indicator(Indicator.dot()

      //   .itemWidth(15)

      //   .itemHeight(15)

      //   .selectedItemWidth(15)

      //   .selectedItemHeight(15)

      //   .color('#00000000')

      //   .selectedColor('#00000000'))

      .displayArrow({ // 设置导航点箭头样式

        showBackground: true,

        isSidebarMiddle: true,

        backgroundSize: 24,

        backgroundColor: Color.White,

        arrowSize: 18,

        arrowColor: Color.Blue

      }, false)

      .curve(Curve.Linear)

      .onChange((index: number) => {

        console.info(index.toString())

      })

      .onGestureSwipe((index: number, extraInfo: SwiperAnimationEvent) => {

        console.info("index: " + index)

        console.info("current offset: " + extraInfo.currentOffset)

      })

      .onAnimationStart((index: number, targetIndex: number, extraInfo: SwiperAnimationEvent) => {

        console.info("index: " + index)

        console.info("targetIndex: " + targetIndex)

        console.info("current offset: " + extraInfo.currentOffset)

        console.info("target offset: " + extraInfo.targetOffset)

        console.info("velocity: " + extraInfo.velocity)

      })

      .onAnimationEnd((index: number, extraInfo: SwiperAnimationEvent) => {

        console.info("index: " + index)

        console.info("current offset: " + extraInfo.currentOffset)

      })

      Row({ space: 12 }) {

        Button('showNext')

          .onClick(() => {

            this.swiperController.showNext()

          })

        Button('showPrevious')

          .onClick(() => {

            this.swiperController.showPrevious()

          })

      }.margin(5)

    }.width('100%')

    .margin({ top: 5 })

  }

}

更多关于HarmonyOS 鸿蒙Next Swiper指示器显示错误的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,Next Swiper指示器显示错误通常与以下几个因素有关:

  1. 数据绑定问题:确保指示器的数据源(如当前页索引)与Swiper组件的当前页正确绑定。检查数据模型是否更新及时,且绑定逻辑无误。

  2. UI布局错误:指示器的位置或大小可能在UI布局中设置不当,导致显示异常。检查XML或JS布局文件中的相关属性设置,确保指示器能够正确显示在其预期位置。

  3. 组件状态不同步:Swiper组件与指示器组件的状态可能未保持同步。检查事件处理逻辑,确保每次Swiper页面切换时,指示器也能相应更新其状态。

  4. 版本兼容性问题:如果使用了鸿蒙系统的某个特定版本,可能存在已知的组件兼容性问题。查阅官方文档或更新日志,确认是否存在此类问题,并考虑升级系统或组件版本。

  5. 自定义组件问题:如果指示器是自定义组件,检查其内部实现逻辑,确保没有引起显示错误的代码。

针对上述问题,逐一排查并修正。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部