首页 > 其他分享 >HarmonyOS-基础之Tabs组件

HarmonyOS-基础之Tabs组件

时间:2024-04-13 22:37:16浏览次数:24  
标签:index TabContent Tabs Text HarmonyOS Color tabBar 组件 icon

1、Tabs的基本使用

@Entry
@Component
struct Index {
  private controller: TabsController = new TabsController();

  // 声明周期函数
  aboutToAppear(){
    // 页面加载 1s后 跳转到商城
    setTimeout(() => {
      this.controller.changeIndex(1)
    },1000)
  }

  build() {
    // tabs组件
    Column() {
      /**
       * barPosition: BarPosition.End  设置tabBar的位置
       * controller: 控制器
       */
      Tabs({ barPosition: BarPosition.End, controller: this.controller }) {
        TabContent() {
          Text('首页')
        }.tabBar('首页')

        TabContent() {
          Text('商城')
        }.tabBar({ icon: $r('app.media.icon') })

        TabContent() {
          Row({ space: 5 }) {
            Text('我的')
            Button('去首页').onClick((event: ClickEvent) => {
              // 跳转到指定索引TabContent
              this.controller.changeIndex(0)
            })
          }
        }.tabBar('我的')
      }
      // 设置是否排列
      // .vertical(true)
    }.width('100%')
    .padding(20)
  }
}

image

2、自定义Tabs

const tabCustomArr = [
  {
    id: 1,
    name: '首页',
    icon: $r('app.media.avatar'),
    color: Color.Grey,
    activeColor: Color.Orange
  },
  {
    id: 2,
    name: '分类',
    icon: $r('app.media.icon'),
    color: Color.Grey,
    activeColor: Color.Green
  },
  {
    id: 3,
    name: '商城',
    icon: $r('app.media.pig'),
    color: Color.Grey,
    activeColor: Color.Red
  },
  {
    id: 4,
    name: '我的',
    icon: $r('app.media.avatar'),
    color: Color.Grey,
    activeColor: Color.Blue
  }
]

@Entry
@Component
struct CustomTabs {
  @State currentIndex: number = 0

  @Builder tabBuilder(index: number) {
    Column() {
      Image(tabCustomArr[index].icon).width(30).height(30)
      Text(tabCustomArr[index].name)
        .fontColor(this.isActive(index) ? tabCustomArr[index].activeColor : tabCustomArr[index].color)
    }
  }

  private isActive(index: number): boolean {
    return index === this.currentIndex
  }

  build() {
    Column() {
      Tabs({ barPosition: BarPosition.End }) {
        TabContent() {
          Text('首页')
        }.tabBar(this.tabBuilder(0))

        TabContent() {
          Text('分类')
        }.tabBar(this.tabBuilder(1))

        TabContent() {
          Text('商城')
        }.tabBar(this.tabBuilder(2))

        TabContent() {
          Text('我的')
        }.tabBar(this.tabBuilder(3))
      }.onChange((index) => {
        console.log(index + "")
        this.currentIndex = index
      })
    }.width('100%')
    .padding(20)
  }
}

image

标签:index,TabContent,Tabs,Text,HarmonyOS,Color,tabBar,组件,icon
From: https://www.cnblogs.com/ybbit/p/18133495

相关文章

  • HarmonyOS NEXT应用开发案例——滑动页面信息隐藏与组件位移效果
    介绍在很多应用中,向上滑动"我的"页面,页面顶部会有如下变化效果:一部分信息逐渐隐藏,另一部分信息逐渐显示,同时一些组件会进行缩放或者位置移动。向下滑动时则相反。效果图预览使用说明向上滑动页面,出现如下变化:用户名/选择身份/设置图标/客服图标逐渐隐藏,用户头像尺寸逐渐缩小......
  • HarmonyOS NEXT应用开发案例——全屏登录页面
    全屏登录页面介绍本例介绍各种应用登录页面。全屏登录页面:在主页面点击跳转到全屏登录页后,显示全屏模态页面,全屏模态页面从下方滑出并覆盖整个屏幕,模态页面内容自定义,此处分为默认一键登录方式和其他登录方式。效果图预览使用说明点击主页面按钮"点击跳转到全屏登录页",......
  • 鸿蒙HarmonyOS实战-ArkUI组件(Navigation)
    ......
  • HarmonyOS NEXT应用开发——Navigation开发 页面切换场景范例
    简介在应用开发时,我们常常遇到,需要在应用内多页面跳转场景时中使用Navigation导航组件做统一的页面跳转管理,它提供了一系列属性方法来设置页面的标题栏、工具栏以及菜单栏的各种展示样式。除此之外还拥有动态加载,navPathStack路由跳转。本文就以Navigation页面切换范例为例,来展......
  • Ant - Form 自定义组件 form.getFiledsValue 如何获取值
    import{FC,useState}from'react';importtype{SelectProps}from'antd';import{Select,Space,Flex,Input,Button}from'antd';/***扩展选择器组件,可以通过键盘enter输入一个Option*/constInputSelect:FC<{defaultOptio......
  • HarmonyOS-基础之页面跳转
    1、配置页面路由信息resources-->base-->profile-->main_pages.json{"src":["pages/demo03/Index","pages/demo03/Detail"]}2、编写页面组件Index.ets/***路由跳转*-使用鸿蒙内置的router*/importrouterfrom'......
  • HarmonyOS-基础之联系人案例
    使用前面学习的相关组件和api实现联系人的CRUD;效果如下父组件import{Contacts}from'../domain/Model'importContactsItemfrom'../components/ContactsItem'@Entry@ComponentstructContactsExample{//联系人数组@StatecontactsArr:Contacts[]=[......
  • 鸿蒙HarmonyOS实战-ArkUI组件(页面路由)
    ......
  • Element中el-time-picer组件中value-format和format得区别
    value-format:它用于指定时间选择器的值的格式,即选择的时间的字符串格式。当用户选择时间后,组件会根据value-format的值将选择的时间转换成相应的字符串格式作为组件的值。这个属性一般用于和后端交互,将时间值以特定格式发送给服务器。format:它用于指定时间选择器的显示格式,即用......
  • 鸿蒙HarmonyOS实战-ArkUI组件(Menu)
    ......