ts-container-tabs.md 4.1 KB
Newer Older
Z
zengyawen 已提交
1 2
# Tabs

Z
zengyawen 已提交
3 4
一种可以通过页签进行内容视图切换的容器组件,每个页签对应一个内容视图。

T
firstt  
tianyu 已提交
5 6 7
>  **说明:**
>
>  该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
Z
zengyawen 已提交
8

Z
zengyawen 已提交
9 10

## 子组件
Z
zengyawen 已提交
11 12 13

包含子组件[TabContent](ts-container-tabcontent.md)

Z
zengyawen 已提交
14

T
firstt  
tianyu 已提交
15
## 接口
Z
zengyawen 已提交
16

L
fix doc  
luoying_ace_admin 已提交
17
Tabs(value?: {barPosition?: BarPosition, index?: number, controller?: [TabsController](#tabscontroller)})
Z
zengyawen 已提交
18

T
firstt  
tianyu 已提交
19
**参数:**
Z
zengyawen 已提交
20

T
firstt  
tianyu 已提交
21 22 23 24 25 26 27 28 29 30 31 32
| 参数名 | 参数类型 | 必填 | 参数描述 |
| -------- | -------- | -------- | -------- |
| barPosition | BarPosition | 否 | 指定页签位置来创建Tabs容器组件。<br/>默认值:BarPosition.Start |
| index | number | 否 | 指定初次初始页签索引。<br/>默认值:0 |
| controller | [TabsController](#tabscontroller) | 否 | 设置Tabs控制器。 |

## BarPosition枚举说明

| 名称 | 描述 |
| -------- | -------- |
| Start | vertical属性方法设置为true时,页签位于容器左侧;vertical属性方法设置为false时,页签位于容器顶部。 |
| End | vertical属性方法设置为true时,页签位于容器右侧;vertical属性方法设置为false时,页签位于容器底部。 |
Z
zengyawen 已提交
33 34 35


## 属性
Z
zengyawen 已提交
36

T
firstt  
tianyu 已提交
37
不支持[触摸热区设置](ts-universal-attributes-touch-target.md),除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性:
Z
zengyawen 已提交
38

T
firstt  
tianyu 已提交
39 40 41 42 43
| 名称 | 参数类型 | 描述 |
| -------- | -------- | -------- |
| vertical          | boolean | 设置为false是为横向Tabs,设置为true时为纵向Tabs。<br/>默认值:false |
| scrollable        | boolean | 设置为true时可以通过滑动页面进行页面切换,为false时不可滑动切换页面。<br/>默认值:true |
| barMode           | BarMode | TabBar布局模式,具体描述见BarMode枚举说明。<br/>默认值:BarMode.Fixed |
L
fix doc  
luoying_ace_admin 已提交
44 45
| barWidth          | number&nbsp;\|&nbsp;Length<sup>8+</sup>  | TabBar的宽度值。     |
| barHeight         | number&nbsp;\|&nbsp;Length<sup>8+</sup>  | TabBar的高度值。     |
T
firstt  
tianyu 已提交
46
| animationDuration | number | TabContent滑动动画时长。<br/>默认值:200 |
Z
zengyawen 已提交
47

T
firstt  
tianyu 已提交
48
## BarMode枚举说明
Z
zengyawen 已提交
49

T
firstt  
tianyu 已提交
50 51 52 53
| 名称 | 描述 |
| -------- | -------- |
| Scrollable | TabBar使用实际布局宽度,&nbsp;超过总长度后可滑动。 |
| Fixed | 所有TabBar平均分配宽度。 |
Z
zengyawen 已提交
54 55 56

## 事件

T
firstt  
tianyu 已提交
57 58
除支持[通用事件](ts-universal-events-click.md)外,还支持以下事件:

T
tianyu 已提交
59
| 名称 | 功能描述 |
60
| -------- | -------- |
L
fix doc  
luoying_ace_admin 已提交
61
| onChange(event:&nbsp;(index:&nbsp;number)&nbsp;=&gt;&nbsp;void) | Tab页签切换后触发的事件。 |
Z
zengyawen 已提交
62

63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
## TabsController

Tabs组件的控制器,用于控制Tabs组件进行页签切换。

### 导入对象

```
controller: TabsController = new TabsController()

```

### changeIndex

changeIndex(value: number): void

控制Tabs切换到指定页签。

T
firstt  
tianyu 已提交
80 81 82 83 84
**参数:**

| 参数名 | 参数类型 | 必填 | 参数描述 |
| -------- | -------- | -------- | -------- |
| value | number | 是 | 页签在Tabs里的索引值,索引值从0开始。 |
85

Z
zengyawen 已提交
86 87

## 示例
Z
zengyawen 已提交
88

H
geshi  
HelloCrease 已提交
89 90
```ts
// xxx.ets
Z
zengyawen 已提交
91 92 93 94 95 96 97
@Entry
@Component
struct TabsExample {
  private controller: TabsController = new TabsController()

  build() {
    Column() {
Z
zengyawen 已提交
98
      Tabs({ barPosition: BarPosition.Start, controller: this.controller }) {
Z
zengyawen 已提交
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Pink)
        }.tabBar('pink')

        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Yellow)
        }.tabBar('yellow')

        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Blue)
        }.tabBar('blue')

        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Green)
        }.tabBar('green')
      }
      .vertical(true).scrollable(true).barMode(BarMode.Fixed)
      .barWidth(70).barHeight(150).animationDuration(400)
      .onChange((index: number) => {
        console.info(index.toString())
      })
      .width('90%').backgroundColor(0xF5F5F5)
    }.width('100%').height(150).margin({ top: 5 })
  }
}
```

Z
zengyawen 已提交
126
![zh-cn_image_0000001174264360](figures/zh-cn_image_0000001174264360.gif)