赞
踩
// @Entry @Component @Builder @State都是修饰器 // 被@Entry修饰的文件被标记为入口文件 @Entry //被@Component修饰的文件被标记为自定义组件 @Component struct TabsExample {//struct是自定义组件结构体,是可以被复用的UI单元 // @State装饰器:@State修饰的变量被标记是状态变量,值变化出发UI界面也变化 @State currentIndex: number = 0; // private 访问修饰符将属性或方法标记为私有, // 表示它们只能在类的内部被访问,外部无法直接访问。 // 私有成员通常用于封装一些内部实现细节,不希望外部直接访问 // 切换指定页签需要使用TabsController,TabsController是Tabs组件的控制器, // 用于控制Tabs组件进行页签切换。 // 通过TabsController的changeIndex方法来实现跳转至指定索引值对应的TabContent内容。 private tabsController: TabsController = new TabsController(); // @Builder装饰器:自定义构建函数 @Builder TabBuilder(title: string, targetIndex: number, selectedImg: Resource, normalImg: Resource) { Column() { Image(this.currentIndex === targetIndex ? selectedImg : normalImg) .size({ width: 25, height: 25 }) Text(title) .fontColor(this.currentIndex === targetIndex ? '#1698CE' : '#6B6B6B') } .width('100%') .height(50) .justifyContent(FlexAlign.Center) .onClick(() => { this.currentIndex = targetIndex; this.tabsController.changeIndex(this.currentIndex); }) } // 声明式的方式来描述 UI 的结构,如build() 方法内部的代码块。 build() { Tabs({ barPosition: BarPosition.End, controller: this.tabsController }) { TabContent() { Column().width('100%').height('100%').backgroundColor('#00CB87') } // this.TabBuilder()这样可以使用之前声明好的函数 .tabBar(this.TabBuilder('首页', 0, $r('app.media.home_selected'), $r('app.media.home_normal'))) TabContent() { Column().width('100%').height('100%').backgroundColor('#007DFF') } .tabBar(this.TabBuilder('我的', 1, $r('app.media.mine_selected'), $r('app.media.mine_normal'))) } .barWidth('100%') .barHeight(50) .onChange((index: number) => { this.currentIndex = index; }) } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。