当前位置: 首页 > news >正文

HarmonyOS组件之Tabs

Tabs

1.1概念

  1. Tabs 视图切换容器,通过相适应的页签进行视图页面的切换的容器组件
  2. 每一个页签对应一个内容视图
  3. Tabs拥有一种唯一的子集元素TabContent

1.2子组件

  1. 不支持自定义组件为子组件,仅可包含子组件TabContent,以及渲染控制类型 if/else 和 ForEach 并且 if/else 和ForEach下页仅支持TabContent,不支持自定义组件

1.2.1TabContent

  1. 有几个页签就写入几个TabContent
  2. 和build一样,只能有唯一一个子组件

1.3参数(接口)

Tabs(value?: {barPosition?: BarPosition, index?: number, controller?: TabsController})

   Tabs({
       //默认的页面索引
      index: 0, 
       // 页签的位置
      barPosition: BarPosition.End,
       // controller: 控制器,控制页签样式
      controller: this.TabController
      
    }) {
      //有几个页签就写几个TabContent
      //和build一样只能有一个唯一的子组件
      TabContent() {
          
      }
     }
参数名参数类型
barPositionBarPosition
indexNumber
controllerTabsController
  • barPosition:设置页签位置,(配合vertical属性一并使用)
  • index:起始索引,设置当前视图页签的索引,默认是0
  • controller:Tabs控制器

1.3.1 BarPosition枚举

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

注意:属性vertical(value:boolean):vertical默认值为false,表示内容页和导航栏垂直方向排列

1.3.2 Controller 页面控制器

  • 自定义:

    private TabController: TabsController = new TabsController()
    

1.4属性

vertical ( boolean )

  • 默认值:false,设置页签位置

scrollable : boolean

  • 设置是否可以通过滑动页面进行页面的切换

BarMode

  • 设置TabBar布局模式
    • fixed
    • Scrollable:每一个TabBar均使用实际的布局宽度,超过总长度(横向的tabs的barWidth,纵向的tabs的barHeight)可滑动

2.1代码

@Entry
@Component
struct Test01 {
  @State message: string = 'Hello World';
  // 当前页签的索引
  @State CurrentIndex: number = 0
  private TabController: TabsController = new TabsController()
  private scroller: Scroller = new Scroller();

  /*

  *滚动条的滚动范围是父级的高度
  * 滚动条的高度 =父级的高度/x                       x=内容区域的高度/父级的高度
   * Scroll
   *    可滚动的容器组件,
   *    当子组件的布局尺寸超过父组件的尺寸时,内容可以滚动
   *    滚动的前提:主轴方向上的大小小于内容大小
   *  参数:
   *    scroller:可滚动组件的控制器,用于与可滚动的组件进行绑定
   *
   *  属性:
   *    scrollable:设置滚动的方向,默认值ScrollDirection.Vertical
   *    scrollBar:设置滚动条的状态,默认值BarState.Auto
   *      on    默认开启      off:默认关闭      Auto:视情况出现
   *    scrollBarWidth();滚动条的宽度
   *    scrollBarColor():设置滚动条颜色
   *
   *    建议:在最外层用Scroll,防止内容超出页面
   *
   * */
  build() {

    Column() {
      Scroll(){
        Row() {
          this.tab('账号登录', 0)
          this.tab('短信登录', 1)
          this.tab('短信登录', 2)
          this.tab('短信登录', 3)
      }

      }
      .scrollable(ScrollDirection.Horizontal)

      // tab控制器
      Tabs({ controller: this.TabController }) {
        TabContent() {
          Column() {
            Scroll() {
              Text('第一页')
                .backgroundColor(Color.Red)
                .height(10000)
            }

          }.width('100%')
          .height(500)

        }
        .backgroundColor(Color.Pink)

        TabContent() {
          Text('第二页')
        }
      }
      // .barWidth()
      .barHeight(0)
      // 捕获视图的的行为 onChange只有一个参数,对于不同的组件具有不同的意义
      // 该index表示为当前视图的索引
      .onChange((index) => {
        this.CurrentIndex = index
      })
    }
  }

  @Builder
  tab(tabName: string, tabIndex: number) {
    Row() {
      Text(tabName)
        .border({
          width: { bottom: this.CurrentIndex === tabIndex ? 2 : 0 },
          color: Color.Blue
        })
    }
    .onClick(() => {
      // 点击目标页签后,让当前的页签索引等于目标页签的索引
      this.CurrentIndex = tabIndex
      this.TabController.changeIndex(this.CurrentIndex)
    })
    .width(120)
    .height(30)
  }
}

相关文章:

  • 【信息学奥赛一本通 C++题解】1288:三角形最佳路径问题
  • python语言进阶之函数
  • Linux安装Minio
  • 基于51单片机的定时器实现LED闪烁控制(CT107D)
  • 【强化学习】Q-learning算法详解:含MATLAB和Python实现代码
  • 基于SpringBoot+Vue的智慧校园管理系统设计和实现(源码+文档+部署讲解)
  • 配置Api自动生成
  • Python中的HTTP客户端库:httpx与request | python小知识
  • canmv的例程代码与营销策略
  • 驱动开发系列38 - Linux Graphics 3D 绘制流程(一)- 创建画布
  • 【Java 面试 八股文】常见集合篇
  • CViewState::InitializeColumns函数分析最终记录是35项
  • 多模态基础模型第二篇-deepseek-r1部署
  • FPGA之​​​​​​​​​​​​​​HRBANK与HOBANK有什么区别?
  • 002 第一个python程序
  • 企业级API集成方案:基于阿里云函数计算调用DeepSeek全解析
  • 【Leetcode 952】按公因数计算最大组件大小
  • LLM大模型学习资料整理
  • Java爬虫获取1688商品搜索API接口的实现指南
  • python | 两招解决第三方库安装难点
  • 婚姻登记“全国通办”首日观察:数据多跑路,群众少跑腿
  • 巴总理召开国家指挥当局紧急会议
  • 构建菌株有效降解有机污染物,上海交大科研成果登上《自然》
  • 援藏博士张兴堂已任西藏农牧学院党委书记、副校长
  • 光大华夏:近代中国私立大学遥不可及的梦想
  • 吴勇强、高颜已任南京市委常委