中国优质的IT技术网站
专业IT技术创作平台
IT职业在线教育平台
1、Tab控件指示器如何修改颜色?
2、Tab控件指示器如何自定义样式?
微信扫码分享
@Entry @Component struct TabsAttr { private controller: TabsController = new TabsController() @State indicatorColor: Color = Color.Blue; @State indicatorWidth: number = 40; @State indicatorHeight: number = 10; @State indicatorBorderRadius: number = 5; @State indicatorSpace: number = 10; @State subTabBorderRadius: number = 20; @State selectedMode: SelectedMode = SelectedMode.INDICATOR; private colorFlag: boolean = true; private widthFlag: boolean = true; private heightFlag: boolean = true; private borderFlag: boolean = true; private spaceFlag: boolean = true; build() { Column() { Button("下划线颜色变化").width('100%').margin({ bottom: '12vp' }) .onClick((event?: ClickEvent) => { // 对Button组件的宽高属性进行动画配置 if (this.colorFlag) { animateTo({ duration: 1000, // 动画时长 curve: Curve.Linear, // 动画曲线 delay: 200, // 动画延迟 iterations: 1, // 播放次数 playMode: PlayMode.Normal, // 动画模式 onFinish: () => { console.info('play end') } }, () => { this.indicatorColor = Color.Red }) } else { animateTo({ duration: 1000, // 动画时长 curve: Curve.Linear, // 动画曲线 delay: 200, // 动画延迟 iterations: 1, // 播放次数 playMode: PlayMode.Normal, // 动画模式 onFinish: () => { console.info('play end') } }, () => { this.indicatorColor = Color.Yellow }) } this.colorFlag = !this.colorFlag }) Button("下划线高度变化").width('100%').margin({ bottom: '12vp' }) .onClick((event?: ClickEvent) => { // 对Button组件的宽高属性进行动画配置 if (this.heightFlag) { animateTo({ duration: 1000, // 动画时长 curve: Curve.Linear, // 动画曲线 delay: 200, // 动画延迟 iterations: 1, // 播放次数 playMode: PlayMode.Normal, // 动画模式 onFinish: () => { console.info('play end') } }, () => { this.indicatorHeight = 20 }) } else { animateTo({ duration: 1000, // 动画时长 curve: Curve.Linear, // 动画曲线 delay: 200, // 动画延迟 iterations: 1, // 播放次数 playMode: PlayMode.Normal, // 动画模式 onFinish: () => { console.info('play end') } }, () => { this.indicatorHeight = 10 }) } this.heightFlag = !this.heightFlag }) Button("下划线宽度变化").width('100%').margin({ bottom: '12vp' }) .onClick((event?: ClickEvent) => { // 对Button组件的宽高属性进行动画配置 if (this.widthFlag) { animateTo({ duration: 1000, // 动画时长 curve: Curve.Linear, // 动画曲线 delay: 200, // 动画延迟 iterations: 1, // 播放次数 playMode: PlayMode.Normal, // 动画模式 onFinish: () => { console.info('play end') } }, () => { this.indicatorWidth = 30 }) } else { animateTo({ duration: 1000, // 动画时长 curve: Curve.Linear, // 动画曲线 delay: 200, // 动画延迟 iterations: 1, // 播放次数 playMode: PlayMode.Normal, // 动画模式 onFinish: () => { console.info('play end') } }, () => { this.indicatorWidth = 50 }) } this.widthFlag = !this.widthFlag }) Button("下划线圆角半径变化").width('100%').margin({ bottom: '12vp' }) .onClick((event?: ClickEvent) => { // 对Button组件的宽高属性进行动画配置 if (this.borderFlag) { animateTo({ duration: 1000, // 动画时长 curve: Curve.Linear, // 动画曲线 delay: 200, // 动画延迟 iterations: 1, // 播放次数 playMode: PlayMode.Normal, // 动画模式 onFinish: () => { console.info('play end') } }, () => { this.indicatorBorderRadius = 0 }) } else { animateTo({ duration: 1000, // 动画时长 curve: Curve.Linear, // 动画曲线 delay: 200, // 动画延迟 iterations: 1, // 播放次数 playMode: PlayMode.Normal, // 动画模式 onFinish: () => { console.info('play end') } }, () => { this.indicatorBorderRadius = 5 }) } this.borderFlag = !this.borderFlag }) Button("下划线间距变化").width('100%').margin({ bottom: '12vp' }) .onClick((event?: ClickEvent) => { // 对Button组件的宽高属性进行动画配置 if (this.spaceFlag) { animateTo({ duration: 1000, // 动画时长 curve: Curve.Linear, // 动画曲线 delay: 200, // 动画延迟 iterations: 1, // 播放次数 playMode: PlayMode.Normal, // 动画模式 onFinish: () => { console.info('play end') } }, () => { this.indicatorSpace = 20 }) } else { animateTo({ duration: 1000, // 动画时长 curve: Curve.Linear, // 动画曲线 delay: 200, // 动画延迟 iterations: 1, // 播放次数 playMode: PlayMode.Normal, // 动画模式 onFinish: () => { console.info('play end') } }, () => { this.indicatorSpace = 10 }) } this.spaceFlag = !this.spaceFlag }) Tabs({ barPosition: BarPosition.End, controller: this.controller }) { TabContent() { Column().width('100%').height('100%').backgroundColor(Color.Pink).borderRadius('12vp') }.tabBar(SubTabBarStyle.of('pink') .indicator({ color: this.indicatorColor, //下划线颜色 height: this.indicatorHeight, //下划线高度 width: this.indicatorWidth, //下划线宽度 borderRadius: this.indicatorBorderRadius, //下划线圆角半径 marginTop: this.indicatorSpace //下划线与文字间距 }) .selectedMode(this.selectedMode) .board({ borderRadius: this.subTabBorderRadius }) .labelStyle({}) ) TabContent() { Column().width('100%').height('100%').backgroundColor(Color.Yellow).borderRadius('12vp') }.tabBar('yellow') TabContent() { Column().width('100%').height('100%').backgroundColor(Color.Blue).borderRadius('12vp') }.tabBar('blue') TabContent() { Column().width('100%').height('100%').backgroundColor(Color.Green).borderRadius('12vp') }.tabBar('green') TabContent() { Column().width('100%').height('100%').backgroundColor(Color.Gray).borderRadius('12vp') }.tabBar('gray') TabContent() { Column().width('100%').height('100%').backgroundColor(Color.Orange).borderRadius('12vp') }.tabBar('orange') } .vertical(false) .scrollable(true) .barMode(BarMode.Scrollable) .barHeight(140) .animationDuration(400)