首页 > 其他分享 >关于鸿蒙开发中容器组件Tabs的介绍

关于鸿蒙开发中容器组件Tabs的介绍

时间:2024-08-17 13:57:17浏览次数:12  
标签:TabContent 鸿蒙 Tabs 切换 设置 组件 默认值

当页面内容较多时,可以通过Tabs组件进行 分类展示。

Tabs基本用法

struct TabbarDemo {
    build() {
        // 外层顶级容器
        Tabs() {
            TabContent(){
                // 内容区域:只能有一个子组件
                Text('首页内容')
            }
            .tabBar('首页')// 导航栏
            TabContent(){
                // 内容区域:只能有一个子组件
                Text('推荐内容')
            }
            .tabBar('推荐')// 导航栏
            .......
        }
    }
}

Tabs常用属性

属性名参数类型说明
barPosition

BarPosition

设置Tabs的页签位置。

默认值:BarPosition.Start

verticalboolean

是否为纵向Tab。

默认值:false,为true时为纵向。

当横向Tabs设置height为auto时,Tabs组件高度自适应子组件高度,即为tabBar高度 + divider线宽 + TabContent高度 + 上下padding值 + 上下border宽度。

当纵向Tabs设置width为auto时,Tabs组件宽度自适应子组件宽度,即为tabBar宽度 + divider线宽 + TabContent宽度 + 左右padding值 + 左右border宽度。

尽量保持每一个页面中的子组件尺寸大小一致,避免滑动页面时出现页面切换动画跳动现象。

scrollableboolean

是否可以通过滑动页面进行页面切换。

默认值:true,为false时不可以滑动切换页面。

animationDurationnumber

点击滑动动画时间

单位:ms(毫秒)

默认值:

  • API version 10及以前,不设置该属性或设置为null时,默认值为0,即点击TabBar页签和调用TabsController的changeIndex接口切换TabContent无动画。设置为小于0或undefined时,默认值为300。
  • API version 11及以后,不设置该属性或设置为异常值,且设置TabBar为BottomTabBarStyle样式时,默认值为0。设置TabBar为其他样式时,默认值为300。
barModeBarMode

布局模式

默认值:BarMode.Fixed

 BarPosition枚举说明

名称描述
Startvertical属性方法设置为true时,页签位于容器左侧;vertical属性方法设置为false时,页签位于容器顶部。
Endvertical属性方法设置为true时,页签位于容器右侧;vertical属性方法设置为false时,页签位于容器底部。

BarMode枚举说明

名称描述
Scrollable0每一个TabBar均使用实际布局宽度,超过总长度(横向Tabs的barWidth,纵向的barHeight)后可滑动。
Fixed1所有TabBar平均分配barWidth宽度(纵向时平均分配barHeight高度)。

滚动导航栏

如果导航栏的内容较多,屏幕无法容纳时,可以将他设置为滚动

可以通过Tabs组件的barMode属性即可调整 固定导航栏滚动导航栏

Tabs() {
    // 内容区域
}
.barMode(BarMode.Scrollable)// 滚动
// .barMode(BarMode.Fixed) //默认值

自定义TabBar

TabrBar在底部,一般会显示 图形 文字,甚至有 特殊的图标

基础结构

Tabs() {
    TabContent() { 内容区域 }
    .tabBar(this.tabBarBuilder())
}

@Builder
tabBarBuilder(){
    // 自定义的Tabbar结构
}

高亮切换

核心思路
  1. 监听切换事件 → 得到索引值,记录高亮的索引
  2. 给每个tabBar起个标记,0,1,2
  3. 在tabBar内部比较 标记 == 记录的索引?高亮 :不高亮
切换事件
名称功能描述
onChange(event: (index: number) => void)

Tab页切换后触发的事件

index:当前显示的index索引,索引从0开始计算

何时触发:滑动切换、点击切换

onTabBarClick(event: (index: number) => void)10+

Tab页签点击后触发的事件

index:被点击的index索引,索引从0开始计算

何时触发:点击切换

onChange触发条件:

1、TabContent支持滑动时,组件触发滑动时触发。

2、通过控制器API接口调用。

3、通过状态变量构造的属性值进行修改。

4、通过页签处点击触发。

标签:TabContent,鸿蒙,Tabs,切换,设置,组件,默认值
From: https://blog.csdn.net/qq_45569925/article/details/141277974

相关文章

  • 使用 prefetchComponents 进行组件预取
    title:使用prefetchComponents进行组件预取date:2024/8/17updated:2024/8/17author:cmdragonexcerpt:摘要:本文介绍Nuxt.js中的prefetchComponents功能,用于预取组件以提高用户体验。通过在客户端后台下载和缓存组件,确保在用户需要时快速加载。文章涵盖了prefetchComp......
  • 关于鸿蒙开发中滚动容器Scroll的介绍
    当子组件的布局尺寸超过Scroll的尺寸时,内容可以滚动。Scroll的核心用法用法说明:Scroll设置尺寸设置溢出的子组件【只支持一个子组件】滚动方向:支持横向和纵向,默认纵向Scroll(){//只支持一个子组件Column(){//内容放在内部//尺寸超过Scrol......
  • Grid++Report 组件使用最简代码
    在‘添加引用’窗口中选择‘COM’选项卡,在列表中双击‘Grid++ReportEngine6.0TypeLibrary’项使用设计器设计一个模板,加入vs2022项目  设置为文件新则拷贝因为是打印标签,数据有限,所以模板使用参数传递数据,纸型按实际标签的长宽设置c#调用模板的代码如下privatev......
  • 鸿蒙交互事件开发01——点击/拖拽/触摸事件
     如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下方名片,关注公众号,公众号更新更快,同时也有更多学习资料和技术讨论群。1  概  述  事件是人机交互的基础,鸿蒙开发中,事件分为两大类:a)通用事件;b)手势事件。......
  • 界面控件DevExpress即将推出全新AI功能,WinForms & Blazor组件可用!
    DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpressDashboardeXpressApp框架、适用于VisualStudio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress近期重要版本v24.1已正式发布,该版本拥有众多新产品和数十个具有高影响力......
  • 鸿蒙中hvigor自定义任务
    鸿蒙中,各个module都可以自定义hvigor任务进行一些编译期的操作,方便多模块打包时,进行编译期的一些修改和配置下面简单列举下自定义任务的创建import{hapTasks}from'@ohos/hvigor-ohos-plugin';let__Version='1.0.0'exportfunctionloadVersionFun(params){re......
  • .NET8 Blazor 从入门到精通:(二)组件
    目录Blazor组件基础路由导航参数组件参数路由参数生命周期事件状态更改组件事件Blazor组件基础新建一个项目命名为MyComponents,项目模板的交互类型选Auto,其它保持默认选项:客户端组件(Auto/WebAssembly):最终解决方案里面会有两个项目:服务器端项目、客户端项目,组件按......
  • ArkTs基础语法-声明式UI-页面和自定义组件生命周期
    页面和自定义组件生命周期组件和页面的关系生命周期页面生命周期组件生命周期普通流程为:其他流程:自定义组件的创建和渲染流程首次创建重新渲染自定义组件的删除自定义组件监听页面生命周期组件和页面的关系自定义组件:@Component装饰的UI单元,可以组合多个系统组件......
  • 鸿蒙语言ArkTS
    鸿蒙语言ArkTS一.软件布局 可以备份多个ets文件(复制黏贴),但是只执行Index.ets 二.日志文件打印打开预览器就能查看代码运行效果,预览器实时更新(保存就更新)。console.log('说话内容','helloworld')//console.log的语法:console.log('解释',实际内容)会在日志里打印,解释......
  • 鸿蒙编译期变量使用
    需要修改对应module模块的hvigorfile.ts文件,修改内容如下import{hapTasks}from'@ohos/hvigor-ohos-plugin';//当前文件初始内容,不通模块有可能不一样,都不用动letmyParams='我是自定义参数'exportdefault{system:hapTasks,/*Built-inpluginofHvigor.It......