鸿蒙学习笔记十一:实现吸顶悬浮效果

效果图如下:
image.png

image.png

image.png
示例代码如下:
  private scroller: Scroller = new Scroller();
  @State private currentIndex: number = 0
  @State private homeTabs: Array<string> = new Array()

@Builder
  list() {
    List({ scroller: this.scroller }) {
      ListItem() {
        //上滑时需要折叠的部分
        this.topScroll() 
      }
      
      //需要悬浮的tab
      ListItem() {
        Tabs({ index: this.currentIndex }) {
          ForEach(this.homeTabs, (tabBO: string, index) => {
            TabContent() {
              //tab对应的内容页
              this.tabContent(tabBO)
            }
            .tabBar(this.tabBuilder(tabBO.tabName, index))
          })
        }
        .barWidth(Dimens.dimen(285))
        .barHeight(Dimens.dimen(55))
        .barBackgroundColor(Colors.transparent)
        .backgroundColor(Colors.transparent)
        .barMode(BarMode.Fixed)
        .scrollable(false) //禁止滑动,因为滑动的时候顶部tab的切换会滞后,并且滑动到艺术品之后还能左滑
        .onChange((index) => {
          this.currentIndex = index
        })
      }
    }
    .edgeEffect(EdgeEffect.None)
    .scrollBar(BarState.Off)
    .width('100%')
    .height('100%')
  }


  @Builder
  tabBuilder(title: string, index: number) {
    //TabBtn是我们自己自定义的组件,可以先替换成Text()尝试
    TabBtn({
      text: title,
      selectStatus: this.currentIndex == index,
      scene: KButtonScene.PRIMARY,
      focusEnhance: true,
      optionWidth: 'auto',
      btnClick: () => {
        this.currentIndex = index
        this.isScrollToTop = !this.isScrollToTop
      }
    })
      .padding({ left: 10, right: 10 })
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容