Skip to content

锚点Anchor

一、效果总览

二、描述

锚点定位,常位于长列表,用于快速定位到指定位置或者模块

三、构造函数及参数说明

typescript
OmniAnchor({
  @Require listDataWithAnchor: ListDataModel[],
  selectedAnchorTextModifier : AnchorTextModifier,
  unSelectedAnchorTextModifier : AnchorTextModifier,
  anchorBarModifier: AnchorBarModifier,
  indicatorModifier:AnchorIndicatorModifier,
  listBuilder: ($$: ListDataModel[]) => void
})
参数名参数类型描述是否必填默认值
listDataWithAnchorListDataModel[]带锚点的列表数据[]
listBuilder($$: ListDataModel[]) => void列表item构造器
selectedAnchorTextModifierAnchorTextModifier选中时样式modifierAnchorTextModifier()
unSelectedAnchorTextModifierAnchorTextModifier未选中时样式modifierAnchorTextModifier()
anchorBarModifierAnchorBarModifier锚点导航栏样式modifierAnchorBarModifier()
indicatorModifierAnchorIndicatorModifier锚点导航栏文本底部指示器modifierAnchorIndicatorModifier()

四、代码演示

效果1:默认效果

默认效果只需要传入数据以及自定义构造列表即可

typescript
@Builder
itemListBuilder(listData: ListDataModel[]) {
  ForEach(listData, (item: ListDataModel) => {
    ListItem() {
      Text(`this is ${item.title} ${(item as RealListDataWithAnchor).extraData ?? ""}`)
        .height(500)
        .width('100%')
        .fontSize(28)
        .backgroundColor((item as RealListDataWithAnchor).backgroundColor ?? Color.Transparent)
    }
  })
}

OmniAnchor({
    listDataWithAnchor: this.mockListData,
    listBuilder: this.itemListBuilder
  })

效果2:自定义选中样式

自定义选中和不选中样式则需要传入selectedAnchorTextModifierunSelectedAnchorTextModifier

typescript
@Builder
itemListBuilder(listData: ListDataModel[]) {
  ForEach(listData, (item: ListDataModel) => {
    ListItem() {
      Text(`this is ${item.title} ${(item as RealListDataWithAnchor).extraData ?? ""}`)
        .height(500)
        .width('100%')
        .fontSize(28)
        .backgroundColor((item as RealListDataWithAnchor).backgroundColor ?? Color.Transparent)
    }
  })
}

OmniAnchor({
    selectedAnchorTextModifier: new AnchorTextModifier()
      .withFontWeight(FontWeight.Medium)
      .withFontColor('#00ff00'),
    unSelectedAnchorTextModifier: new AnchorTextModifier(),
    anchorBarModifier: new AnchorBarModifier(),
    listDataWithAnchor: this.mockListData,
    listBuilder: this.itemListBuilder
  })

效果3:自定义锚点导航栏样式

均分

typescript
anchorBarModifier:new AnchorBarModifier().withJustifyContent(FlexAlign.SpaceAround)

居中

typescript
anchorBarModifier:new AnchorBarModifier().withJustifyContent(FlexAlign.SpaceEvenly)

撑满剩余空间

typescript
anchorBarModifier:new AnchorBarModifier().withJustifyContent(FlexAlign.SpaceBetween)