1# AtomicServiceTabs 2 3AtomicServiceTabs高级组件,对Tabs组件一些不需提供给用户自定义设计的属性进行简化,限制最多显示5个页签,固定页签样式,位置和大小。 4 5> **说明:** 6> 7> 该组件从API Version 12开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 8 9## 导入模块 10 11``` 12import { AtomicServiceTabs, TabBarOptions, TabBarPosition, OnContentWillChangeCallback } from '@kit.ArkUI'; 13``` 14 15## 子组件 16 17无 18 19## 属性 20 21不支持[通用属性](ts-universal-attributes-size.md) 22 23## AtomicServiceTabs 24 25``` 26AtomicServiceTabs ({ 27 tabContents?: [ TabContentBuilder?, 28 TabContentBuilder?, 29 TabContentBuilder?, 30 TabContentBuilder?, 31 TabContentBuilder? 32 ], 33 tabBarOptionsArray: [ TabBarOptions, 34 TabBarOptions, 35 TabBarOptions?, 36 TabBarOptions?, 37 TabBarOptions? 38 ], 39 tabBarPosition?: TabBarPosition, 40 barBackgroundColor?: ResourceColor, 41 index?: number, 42 barOverlap?: boolean, 43 controller?: TabsController, 44 onChange?: Callback<number>, 45 onTabBarClick?: Callback<number>, 46 onContentWillChange?: OnContentWillChangeCallback, 47}) 48``` 49**装饰器类型:**\@Component 50 51**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 52 53**系统能力:** SystemCapability.ArkUI.ArkUI.Full 54 55**参数:** 56 57| 名称 | 类型 | 必填 | 装饰器类型 | 说明 | 58| --------------- | ------ | ---- | ----|----------| 59| tabContents | [[TabContentBuilder?](#tabcontentbuilder),[TabContentBuilder?](#tabcontentbuilder), [TabContentBuilder?](#tabcontentbuilder),[TabContentBuilder?](#tabcontentbuilder), [TabContentBuilder?](#tabcontentbuilder)] | 否 | @BuilderParam| 内容视图容器数组。| 60| tabBarOptionsArray | [[TabBarOptions?](#tabbaroptions),[TabBarOptions?](#tabbaroptions), [TabBarOptions?](#tabbaroptions),[TabBarOptions?](#tabbaroptions), [TabBarOptions?](#tabbaroptions)] | 是 | @Prop | 页签容器数组。 | 61| tabBarPosition | [TabBarPosition](#tabbarposition) | 否 |@Prop | 设置页签栏位置。| 62| barBackgroundColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | @Prop | 设置TabBar的背景颜色。| 63| index | number | 否 | @Prop | 设置当前显示页签的索引。| 64| barOverlap | boolean| 否 | @Prop | 设置TabBar是否背后变模糊并叠加在TabContent之上。| 65| controller|[TabsController](ts-container-tabs#tabscontroller) | 否 | - |Tabs组件的控制器,用于控制Tabs组件进行页签切换。| 66| onChange | Callback\<number\> | 否 | - | Tabs页签切换后触发的事件。 | 67| onTabBarClick | Callback\<number\> | 否 | - |Tabs页签点击后触发的事件。| 68| onContentWillChange | [OnContentWillChangeCallback](#oncontentwillchangecallback) | 否 | - | Tabs页面切换拦截事件能力,新页面即将显示时触发该回调。| 69 70## TabContentBuilder 71 72type TabContentBuilder = () => void 73 74**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 75 76**系统能力:** SystemCapability.ArkUI.ArkUI.Full 77 78| 类型 | 说明 | 79| ---- | ---------- | 80| () => void | 内容视图容器 | 81 82## TabBarOptions 83 84初始化页签的构造函数,包括icon,text,unselectColor和SelectedColor。 85 86### constructor 87 88constructor(icon: ResourceStr | TabBarSymbol, text: ResourceStr, unselectedColor?: ResourceColor, selectedColor?: ResourceColor); 89 90**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 91 92**系统能力:** SystemCapability.ArkUI.ArkUI.Full 93 94| 名称 | 类型 | 必填 | 说明 | 95| --------------- | ------ |------ |------ | 96| icon | [ResourceStr](ts-types.md#resourcestr) \| [TabBarSymbol](#tabbarsymbol12) | 是 | 页签内的图片内容 | 97| text | [ResourceStr](ts-types.md#resourcestr) | 是 | 页签内的文字内容。 | 98| unselectedColor | [ResourceColor](ts-types.md#resourcecolor) | 是 | 未选择时的页签颜色。 | 99| selectedColor | [ResourceColor](ts-types.md#resourcecolor) | 是 | 被选择时的页签颜色。 | 100 101## TabBarPosition 102 103**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 104 105**系统能力:** SystemCapability.ArkUI.ArkUI.Full 106 107| 名称 | 值 | 说明 | 108| --------------- | ------ |-----| 109| LEFT | 0 | 设置TabBar位于屏幕左侧 | 110| BOTTOM | 1 | 设置TabBar位于屏幕底部 | 111 112## OnContentWillChangeCallback 113 114type OnContentWillChangeCallback = (currentIndex: number, comingIndex: number) => boolean 115 116**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 117 118**系统能力:** SystemCapability.ArkUI.ArkUI.Full 119 120| 名称 | 类型 | 必填 | 说明 | 121| --------------- | ------ |------ |------ | 122| currentIndex | number | 是 | 当前页签索引。 | 123| comingIndex | number | 是 | 即将切换的页签索引。 | 124 125## 示例 126 127```ts 128// Index.ets 129import { AtomicServiceTabs, TabBarOptions, TabBarPosition, OnContentWillChangeCallback } from '@kit.ArkUI'; 130 131@Entry 132@Component 133struct Index { 134 @State message: string = '首页'; 135 @State onClickNumber: number = 0; 136 @State currentIndex: number = 0; 137 @State comingIndex: number = 0; 138 onContentWillChangeCallBack: OnContentWillChangeCallback = (currentIndex: number, comingIndex: number): boolean => { 139 this.currentIndex = currentIndex; 140 this.comingIndex = comingIndex; 141 console.log('OnContentWillChangeCallback') 142 return true; 143 } 144 onTabClick: Callback<number> = (index:number)=>{ 145 this.onClickNumber ++; 146 console.log('onTabClick'); 147 } 148 @Builder 149 tabContent1() { 150 Column().width('100%').height('100%').alignItems(HorizontalAlign.Center).backgroundColor('#00CB87') 151 } 152 153 @Builder 154 tabContent2() { 155 Column().width('100%').height('100%').backgroundColor('#007DFF') 156 } 157 158 @Builder 159 tabContent3() { 160 Column().width('100%').height('100%').backgroundColor('#FFBF00') 161 } 162 163 build() { 164 Stack() { 165 AtomicServiceTabs({ 166 tabContents: [ 167 () => { 168 this.tabContent1() 169 }, 170 () => { 171 this.tabContent2() 172 }, 173 () => { 174 this.tabContent3() 175 } 176 ], 177 tabBarOptionsArray: [ 178 new TabBarOptions($r('sys.media.ohos_ic_public_phone'), '绿色', Color.Black, Color.Blue), 179 new TabBarOptions($r('sys.media.ohos_ic_public_location'), '蓝色', Color.Black, Color.Blue), 180 new TabBarOptions($r('sys.media.ohos_ic_public_more'), '黄色', Color.Black, Color.Blue) 181 ], 182 tabBarPosition: TabBarPosition.BOTTOM, 183 barBackgroundColor: $r('sys.color.ohos_id_color_bottom_tab_bg'), 184 onTabBarClick:this.onTabClick, 185 onContentWillChange: this.onContentWillChangeCallBack, 186 }) 187 Column() { 188 Text("onchange回调次数:" + this.onClickNumber) 189 Text("comingIndex = " + this.comingIndex + ", currentIndex = " + this.currentIndex) 190 }.margin({top:500}) 191 }.height('100%') 192 } 193} 194``` 195