HarmonyOS鸿蒙Next开发中自定义标签栏组件page_tabs

HarmonyOS鸿蒙Next开发中自定义标签栏组件page_tabs

前言

最近开发鸿蒙APP,发现系统的标签栏功能太少,于是自定义了一个,具体内容可查看【鸿蒙开发】自定义顶部Tabs标签栏,支持字体大小和颜色渐变,且该库已发布到OpenHarmony三方库中心仓page_tabs,下面说说该库的具体内容。

介绍

PageTabs是一个自定义Tabs标签栏分页组件

PageScroll是一个支持Header,标签悬停的分页组件

特性

  • 标签支持文字、图片、图文混合等多种样式
  • 标签支持文字大小、图片大小缩放,文字颜色渐变
  • 标签背景支持颜色、图片、自定义Builder
  • 标签支持设置左右间距
  • 指示器支持设置颜色、图片、自定义Builder等
  • 支持页面滑动与指示器联动

安装教程

方法一:在Terminal窗口中,执行如下命令安装三方包,DevEco Studio会自动在工程的oh-package.json5中自动添加三方包依赖。

建议:在使用的模块路径下进行执行命令。

ohpm install [@quint](/user/quint)/page_tabs

方法二:在工程的oh-package.json5中设置三方包依赖,配置示例如下:

"dependencies": { "[@quint](/user/quint)/page_tabs": "^1.0.0" }

使用示例

1、创建TabItem数组

items: TabItem[] = [
    {
      title: '推荐'
    },
    {
      title: '关注'
    },
    {
      title: '直播'
    },
    {
      title: '短视频'
    }
  ]

2、添加PageTabs

build() {
    Column() {
      PageTabs({
        items: this.items,
        pageBuild: (index) => {
          this.page(index)
        },
        config: {
          backgroundColor: '#ff84b4e0',
          tabHeight: 30
        }
      })
    }
  }

配置说明

1、标签item配置

属性 说明
title 标题
titleWidth 标题宽度
titleHeight 标题高度
image 图片
imageWidth 图片宽度
imageHeight 图片高度
imagePosition 图片相对标题的位置(上下左右)
margin 图片与标题的间距

2、标签配置

说明 效果图
normalFont 默认字体
selectFont 选中字体
normalColor 默认颜色
selectColor 选中颜色
backgroundColor 标签+指示器整体背景颜色
backgroundImage 标签+指示器整体背景图片
backgroundBuilder 标签+指示器整体自定义背景组件
contentLeft 标签整体左边距
contentRight 标签整体右边距
tabMargin 标签间距
tabHeight 标签整体高度
horizontalAlign 标签水平对齐方式
verticalAlign 标签垂直对齐方式
isImageScale 是否开启图片缩放
imageScale 图片缩放比例
isSizeScale 是否开启字体大小缩放
isColorGradient 是否开启文字颜色渐变
isAverageTab 标签数量较少时是否均分

3、指示器配置

属性 说明
image 图片
color 颜色
width 宽度
height 高度
radius 圆角
margin 距离标签间距

4、其他配置

属性 说明
defaultIndex 默认索引
cacheCount 缓存页面数量
controller 控制器
listener 监听器
pageBuild 子页面Build

效果图

1、标签样式

说明 效果图
文本 文本
图片 图片
图文混排 图文混排
宽度均分 宽度均分
标签覆盖列表 标签覆盖列表

2、指示器样式

说明 效果图
宽度固定 宽度固定
宽度跟随 宽度跟随
颜色 颜色
图片 图片

3、背景

说明 效果图
背景颜色 背景颜色
背景图片 背景图片
背景颜色渐变 背景颜色渐变
背景图片切换 背景图片切换

4、PageScroll

说明 效果图
仿微博 仿微博
主页刷新 主页刷新
列表刷新 列表刷新

更多关于HarmonyOS鸿蒙Next开发中自定义标签栏组件page_tabs的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS Next中,自定义标签栏组件page_tabs主要通过TabsTabContent组件实现。开发者可使用@Builder装饰器自定义每个标签页的样式与内容,并通过TabContenttabBar属性关联自定义标签项。布局结构通常为Tabs包含多个TabContent子组件。状态管理依赖@State装饰的变量来控制当前激活页。

更多关于HarmonyOS鸿蒙Next开发中自定义标签栏组件page_tabs的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


感谢分享 @quint/page_tabs 这个自定义标签栏组件。从你的介绍来看,这是一个功能非常全面且设计精良的第三方库,很好地弥补了系统 Tabs 组件在样式定制和交互效果上的不足。

核心价值分析:

  1. 高度可定制性:组件提供了从标签文字、图片、背景到指示器的全方位样式配置选项,特别是支持自定义 Builder,这为开发者实现高度个性化的UI设计提供了极大便利。
  2. 丰富的交互效果:实现了字体大小缩放、颜色渐变、图片缩放等平滑过渡效果,并与页面滑动紧密联动,显著提升了视觉体验和应用质感,达到了主流应用的水平。
  3. 架构清晰:将 PageTabs (纯标签栏) 与 PageScroll (集成头部与悬停的分页容器) 分离,职责明确,开发者可以根据场景灵活选用,PageScroll 组件仿微博等复杂布局的实现展示了其处理复杂交互的能力。
  4. 良好的开发者体验:文档详尽,配置说明表格化,并提供了从文本、图文到各种背景、指示器样式的丰富示例效果图,降低了集成和使用门槛。通过OHPM仓安装,管理依赖也很方便。

在HarmonyOS Next开发中的适用性:

该组件基于ArkTS/ArkUI开发,其API设计和实现理念与HarmonyOS的声明式UI范式契合。对于需要在Next上实现复杂标签栏交互、追求特定视觉风格的应用来说,这是一个可以直接采用的高质量解决方案,能够节省大量的重复开发时间。

小结: page_tabs 组件库完成度很高,解决了实际开发中的痛点,其设计思路和实现细节(如联动、渐变、悬停)对社区开发者也有很好的参考价值。你将其开源并发布到三方库中心仓,为HarmonyOS生态贡献了一个实用的UI组件。

回到顶部