ts-container-tabs.md 11.9 KB
Newer Older
Z
zengyawen 已提交
1 2 3 4
# Tabs<a name="ZH-CN_TOPIC_0000001237475055"></a>

>![](../../public_sys-resources/icon-note.gif) **说明:** 
>该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
Z
zengyawen 已提交
5 6 7 8 9

一种可以通过页签进行内容视图切换的容器组件,每个页签对应一个内容视图。

## 支持设备<a name="section322851519172"></a>

Z
zengyawen 已提交
10
<table><thead align="left"><tr><th class="cellrowborder" valign="top" width="23.66106080206986%" id="mcps1.1.5.1.1"><p>手机</p>
Z
zengyawen 已提交
11
</th>
Z
zengyawen 已提交
12
<th class="cellrowborder" valign="top" width="26.3130659767141%" id="mcps1.1.5.1.2"><p>平板</p>
Z
zengyawen 已提交
13
</th>
Z
zengyawen 已提交
14
<th class="cellrowborder" valign="top" width="24.63130659767141%" id="mcps1.1.5.1.3"><p>智慧屏</p>
Z
zengyawen 已提交
15
</th>
Z
zengyawen 已提交
16
<th class="cellrowborder" valign="top" width="25.39456662354463%" id="mcps1.1.5.1.4"><p>智能穿戴</p>
Z
zengyawen 已提交
17 18 19
</th>
</tr>
</thead>
Z
zengyawen 已提交
20
<tbody><tr><td class="cellrowborder" valign="top" width="23.66106080206986%" headers="mcps1.1.5.1.1 "><p>支持</p>
Z
zengyawen 已提交
21
</td>
Z
zengyawen 已提交
22
<td class="cellrowborder" valign="top" width="26.3130659767141%" headers="mcps1.1.5.1.2 "><p>支持</p>
Z
zengyawen 已提交
23
</td>
Z
zengyawen 已提交
24
<td class="cellrowborder" valign="top" width="24.63130659767141%" headers="mcps1.1.5.1.3 "><p>不支持</p>
Z
zengyawen 已提交
25
</td>
Z
zengyawen 已提交
26
<td class="cellrowborder" valign="top" width="25.39456662354463%" headers="mcps1.1.5.1.4 "><p>不支持</p>
Z
zengyawen 已提交
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
</td>
</tr>
</tbody>
</table>

## 权限列表<a name="section988262631714"></a>



## 子组件<a name="section5989144051714"></a>

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

## 接口说明<a name="section97451749121712"></a>

Tabs\(value: \{barPosition?: BarPosition, index?: number, controller?:  [TabsController](#section104288910399)\}\)

-   参数

Z
zengyawen 已提交
46
    <table><thead align="left"><tr><th class="cellrowborder" valign="top" width="16.11%" id="mcps1.1.6.1.1"><p>参数名</p>
Z
zengyawen 已提交
47
    </th>
Z
zengyawen 已提交
48
    <th class="cellrowborder" valign="top" width="19.3%" id="mcps1.1.6.1.2"><p>参数类型</p>
Z
zengyawen 已提交
49
    </th>
Z
zengyawen 已提交
50
    <th class="cellrowborder" valign="top" width="9.77%" id="mcps1.1.6.1.3"><p>必填</p>
Z
zengyawen 已提交
51
    </th>
Z
zengyawen 已提交
52
    <th class="cellrowborder" valign="top" width="18.6%" id="mcps1.1.6.1.4"><p>默认值</p>
Z
zengyawen 已提交
53
    </th>
Z
zengyawen 已提交
54
    <th class="cellrowborder" valign="top" width="36.22%" id="mcps1.1.6.1.5"><p>参数描述</p>
Z
zengyawen 已提交
55 56 57
    </th>
    </tr>
    </thead>
Z
zengyawen 已提交
58
    <tbody><tr><td class="cellrowborder" valign="top" width="16.11%" headers="mcps1.1.6.1.1 "><p>barPosition</p>
Z
zengyawen 已提交
59
    </td>
Z
zengyawen 已提交
60
    <td class="cellrowborder" valign="top" width="19.3%" headers="mcps1.1.6.1.2 "><p><a href="#li15340346135115">BarPosition</a></p>
Z
zengyawen 已提交
61
    </td>
Z
zengyawen 已提交
62
    <td class="cellrowborder" valign="top" width="9.77%" headers="mcps1.1.6.1.3 "><p>否</p>
Z
zengyawen 已提交
63
    </td>
Z
zengyawen 已提交
64
    <td class="cellrowborder" valign="top" width="18.6%" headers="mcps1.1.6.1.4 "><p>Start</p>
Z
zengyawen 已提交
65
    </td>
Z
zengyawen 已提交
66
    <td class="cellrowborder" valign="top" width="36.22%" headers="mcps1.1.6.1.5 "><p>指定页签位置来创建Tabs容器组件。</p>
Z
zengyawen 已提交
67 68
    </td>
    </tr>
Z
zengyawen 已提交
69
    <tr><td class="cellrowborder" valign="top" width="16.11%" headers="mcps1.1.6.1.1 "><p>index</p>
Z
zengyawen 已提交
70
    </td>
Z
zengyawen 已提交
71
    <td class="cellrowborder" valign="top" width="19.3%" headers="mcps1.1.6.1.2 "><p>number</p>
Z
zengyawen 已提交
72
    </td>
Z
zengyawen 已提交
73
    <td class="cellrowborder" valign="top" width="9.77%" headers="mcps1.1.6.1.3 "><p>否</p>
Z
zengyawen 已提交
74
    </td>
Z
zengyawen 已提交
75
    <td class="cellrowborder" valign="top" width="18.6%" headers="mcps1.1.6.1.4 "><p>0</p>
Z
zengyawen 已提交
76
    </td>
Z
zengyawen 已提交
77
    <td class="cellrowborder" valign="top" width="36.22%" headers="mcps1.1.6.1.5 "><p>指定初次初始页签索引。</p>
Z
zengyawen 已提交
78 79
    </td>
    </tr>
Z
zengyawen 已提交
80
    <tr><td class="cellrowborder" valign="top" width="16.11%" headers="mcps1.1.6.1.1 "><p>controller</p>
Z
zengyawen 已提交
81
    </td>
Z
zengyawen 已提交
82
    <td class="cellrowborder" valign="top" width="19.3%" headers="mcps1.1.6.1.2 "><p><a href="#section104288910399">TabsController</a></p>
Z
zengyawen 已提交
83
    </td>
Z
zengyawen 已提交
84
    <td class="cellrowborder" valign="top" width="9.77%" headers="mcps1.1.6.1.3 "><p>否</p>
Z
zengyawen 已提交
85 86
    </td>
    <td class="cellrowborder" valign="top" width="18.6%" headers="mcps1.1.6.1.4 ">&nbsp;&nbsp;</td>
Z
zengyawen 已提交
87
    <td class="cellrowborder" valign="top" width="36.22%" headers="mcps1.1.6.1.5 "><p>设置Tabs控制器。</p>
Z
zengyawen 已提交
88 89 90 91 92 93 94
    </td>
    </tr>
    </tbody>
    </table>

-   <a name="li15340346135115"></a>BarPosition枚举说明

Z
zengyawen 已提交
95
    <table><thead align="left"><tr><th class="cellrowborder" valign="top" width="28.360000000000003%" id="mcps1.1.3.1.1"><p>名称</p>
Z
zengyawen 已提交
96
    </th>
Z
zengyawen 已提交
97
    <th class="cellrowborder" valign="top" width="71.64%" id="mcps1.1.3.1.2"><p>描述</p>
Z
zengyawen 已提交
98 99 100
    </th>
    </tr>
    </thead>
Z
zengyawen 已提交
101
    <tbody><tr><td class="cellrowborder" valign="top" width="28.360000000000003%" headers="mcps1.1.3.1.1 "><p>Start</p>
Z
zengyawen 已提交
102
    </td>
Z
zengyawen 已提交
103
    <td class="cellrowborder" valign="top" width="71.64%" headers="mcps1.1.3.1.2 "><p>vertical属性方法设置为true时,页签位于容器左侧;vertical属性方法设置为false时,页签位于容器顶部。</p>
Z
zengyawen 已提交
104 105
    </td>
    </tr>
Z
zengyawen 已提交
106
    <tr><td class="cellrowborder" valign="top" width="28.360000000000003%" headers="mcps1.1.3.1.1 "><p>End</p>
Z
zengyawen 已提交
107
    </td>
Z
zengyawen 已提交
108
    <td class="cellrowborder" valign="top" width="71.64%" headers="mcps1.1.3.1.2 "><p>vertical属性方法设置为true时,页签位于容器右侧;vertical属性方法设置为false时,页签位于容器底部。</p>
Z
zengyawen 已提交
109 110 111 112 113 114 115 116 117 118
    </td>
    </tr>
    </tbody>
    </table>


### TabsController<a name="section104288910399"></a>

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

Z
zengyawen 已提交
119
<table><thead align="left"><tr><th class="cellrowborder" valign="top" width="26.99%" id="mcps1.1.3.1.1"><p>接口名称</p>
Z
zengyawen 已提交
120
</th>
Z
zengyawen 已提交
121
<th class="cellrowborder" valign="top" width="73.00999999999999%" id="mcps1.1.3.1.2"><p>功能描述</p>
Z
zengyawen 已提交
122 123 124
</th>
</tr>
</thead>
Z
zengyawen 已提交
125
<tbody><tr><td class="cellrowborder" valign="top" width="26.99%" headers="mcps1.1.3.1.1 "><p>changeIndex(value: number): void</p>
Z
zengyawen 已提交
126
</td>
Z
zengyawen 已提交
127
<td class="cellrowborder" valign="top" width="73.00999999999999%" headers="mcps1.1.3.1.2 "><p>控制Tabs切换到指定页签,index: 页签在Tabs里的索引值,索引值从0开始。</p>
Z
zengyawen 已提交
128 129 130 131 132 133 134
</td>
</tr>
</tbody>
</table>

## 属性<a name="section1738516911810"></a>

Z
zengyawen 已提交
135 136 137
不支持触摸热区设置。

<table><thead align="left"><tr><th class="cellrowborder" valign="top" width="17.82%" id="mcps1.1.5.1.1"><p>名称</p>
Z
zengyawen 已提交
138
</th>
Z
zengyawen 已提交
139
<th class="cellrowborder" valign="top" width="15.840000000000002%" id="mcps1.1.5.1.2"><p>参数类型</p>
Z
zengyawen 已提交
140
</th>
Z
zengyawen 已提交
141
<th class="cellrowborder" valign="top" width="19.75%" id="mcps1.1.5.1.3"><p>默认值</p>
Z
zengyawen 已提交
142
</th>
Z
zengyawen 已提交
143
<th class="cellrowborder" valign="top" width="46.589999999999996%" id="mcps1.1.5.1.4"><p>描述</p>
Z
zengyawen 已提交
144 145 146
</th>
</tr>
</thead>
Z
zengyawen 已提交
147
<tbody><tr><td class="cellrowborder" valign="top" width="17.82%" headers="mcps1.1.5.1.1 "><p>vertical</p>
Z
zengyawen 已提交
148
</td>
Z
zengyawen 已提交
149
<td class="cellrowborder" valign="top" width="15.840000000000002%" headers="mcps1.1.5.1.2 "><p>boolean</p>
Z
zengyawen 已提交
150
</td>
Z
zengyawen 已提交
151
<td class="cellrowborder" valign="top" width="19.75%" headers="mcps1.1.5.1.3 "><p>是否为纵向Tab,默认为false。</p>
Z
zengyawen 已提交
152
</td>
Z
zengyawen 已提交
153
<td class="cellrowborder" valign="top" width="46.589999999999996%" headers="mcps1.1.5.1.4 "><p>是否为纵向Tab,默认为false。</p>
Z
zengyawen 已提交
154 155
</td>
</tr>
Z
zengyawen 已提交
156
<tr><td class="cellrowborder" valign="top" width="17.82%" headers="mcps1.1.5.1.1 "><p>scrollable</p>
Z
zengyawen 已提交
157
</td>
Z
zengyawen 已提交
158
<td class="cellrowborder" valign="top" width="15.840000000000002%" headers="mcps1.1.5.1.2 "><p>boolean</p>
Z
zengyawen 已提交
159
</td>
Z
zengyawen 已提交
160
<td class="cellrowborder" valign="top" width="19.75%" headers="mcps1.1.5.1.3 "><p>是否可以通过左右滑动进行页面切换,默认为true。</p>
Z
zengyawen 已提交
161
</td>
Z
zengyawen 已提交
162
<td class="cellrowborder" valign="top" width="46.589999999999996%" headers="mcps1.1.5.1.4 "><p>是否可以通过左右滑动进行页面切换,默认为true。</p>
Z
zengyawen 已提交
163 164
</td>
</tr>
Z
zengyawen 已提交
165
<tr><td class="cellrowborder" valign="top" width="17.82%" headers="mcps1.1.5.1.1 "><p>barMode</p>
Z
zengyawen 已提交
166
</td>
Z
zengyawen 已提交
167
<td class="cellrowborder" valign="top" width="15.840000000000002%" headers="mcps1.1.5.1.2 "><p><a href="#li386615395316">BarMode</a></p>
Z
zengyawen 已提交
168
</td>
Z
zengyawen 已提交
169
<td class="cellrowborder" valign="top" width="19.75%" headers="mcps1.1.5.1.3 "><p>TabBar布局模式。</p>
Z
zengyawen 已提交
170
</td>
Z
zengyawen 已提交
171
<td class="cellrowborder" valign="top" width="46.589999999999996%" headers="mcps1.1.5.1.4 "><p>TabBar布局模式。</p>
Z
zengyawen 已提交
172 173
</td>
</tr>
Z
zengyawen 已提交
174
<tr><td class="cellrowborder" valign="top" width="17.82%" headers="mcps1.1.5.1.1 "><p>barWidth</p>
Z
zengyawen 已提交
175
</td>
Z
zengyawen 已提交
176
<td class="cellrowborder" valign="top" width="15.840000000000002%" headers="mcps1.1.5.1.2 "><p>number</p>
Z
zengyawen 已提交
177
</td>
Z
zengyawen 已提交
178
<td class="cellrowborder" valign="top" width="19.75%" headers="mcps1.1.5.1.3 "><p>TabBar的宽度值,不设置时使用系统主题中的默认值。</p>
Z
zengyawen 已提交
179
</td>
Z
zengyawen 已提交
180
<td class="cellrowborder" valign="top" width="46.589999999999996%" headers="mcps1.1.5.1.4 "><p>TabBar的宽度值,不设置时使用系统主题中的默认值。</p>
Z
zengyawen 已提交
181 182
</td>
</tr>
Z
zengyawen 已提交
183
<tr><td class="cellrowborder" valign="top" width="17.82%" headers="mcps1.1.5.1.1 "><p>barHeight</p>
Z
zengyawen 已提交
184
</td>
Z
zengyawen 已提交
185
<td class="cellrowborder" valign="top" width="15.840000000000002%" headers="mcps1.1.5.1.2 "><p>number</p>
Z
zengyawen 已提交
186
</td>
Z
zengyawen 已提交
187
<td class="cellrowborder" valign="top" width="19.75%" headers="mcps1.1.5.1.3 "><p>TabBar的高度值,不设置时使用系统主题中的默认值。</p>
Z
zengyawen 已提交
188
</td>
Z
zengyawen 已提交
189
<td class="cellrowborder" valign="top" width="46.589999999999996%" headers="mcps1.1.5.1.4 "><p>TabBar的高度值,不设置时使用系统主题中的默认值<strong></strong></p>
Z
zengyawen 已提交
190 191
</td>
</tr>
Z
zengyawen 已提交
192
<tr><td class="cellrowborder" valign="top" width="17.82%" headers="mcps1.1.5.1.1 "><p>animationDuration</p>
Z
zengyawen 已提交
193
</td>
Z
zengyawen 已提交
194
<td class="cellrowborder" valign="top" width="15.840000000000002%" headers="mcps1.1.5.1.2 "><p>number</p>
Z
zengyawen 已提交
195
</td>
Z
zengyawen 已提交
196
<td class="cellrowborder" valign="top" width="19.75%" headers="mcps1.1.5.1.3 "><p>200</p>
Z
zengyawen 已提交
197
</td>
Z
zengyawen 已提交
198
<td class="cellrowborder" valign="top" width="46.589999999999996%" headers="mcps1.1.5.1.4 "><p>TabContent滑动动画时长。</p>
Z
zengyawen 已提交
199 200 201 202 203 204 205
</td>
</tr>
</tbody>
</table>

-   <a name="li386615395316"></a>BarMode枚举说明

Z
zengyawen 已提交
206
    <table><thead align="left"><tr><th class="cellrowborder" valign="top" width="25.2%" id="mcps1.1.3.1.1"><p>名称</p>
Z
zengyawen 已提交
207
    </th>
Z
zengyawen 已提交
208
    <th class="cellrowborder" valign="top" width="74.8%" id="mcps1.1.3.1.2"><p>描述</p>
Z
zengyawen 已提交
209 210 211
    </th>
    </tr>
    </thead>
Z
zengyawen 已提交
212
    <tbody><tr><td class="cellrowborder" valign="top" width="25.2%" headers="mcps1.1.3.1.1 "><p>Scrollable</p>
Z
zengyawen 已提交
213
    </td>
Z
zengyawen 已提交
214
    <td class="cellrowborder" valign="top" width="74.8%" headers="mcps1.1.3.1.2 "><p>TabBar使用实际布局宽度, 超过总长度后可滑动。</p>
Z
zengyawen 已提交
215 216
    </td>
    </tr>
Z
zengyawen 已提交
217
    <tr><td class="cellrowborder" valign="top" width="25.2%" headers="mcps1.1.3.1.1 "><p>Fixed</p>
Z
zengyawen 已提交
218
    </td>
Z
zengyawen 已提交
219
    <td class="cellrowborder" valign="top" width="74.8%" headers="mcps1.1.3.1.2 "><p>所有TabBar平均分配宽度。</p>
Z
zengyawen 已提交
220 221 222 223 224 225 226 227
    </td>
    </tr>
    </tbody>
    </table>


## 事件<a name="section6741113101919"></a>

Z
zengyawen 已提交
228
<table><thead align="left"><tr><th class="cellrowborder" colspan="2" valign="top" id="mcps1.1.4.1.1"><p>名称</p>
Z
zengyawen 已提交
229
</th>
Z
zengyawen 已提交
230
<th class="cellrowborder" valign="top" id="mcps1.1.4.1.2"><p>功能描述</p>
Z
zengyawen 已提交
231 232 233
</th>
</tr>
</thead>
Z
zengyawen 已提交
234
<tbody><tr><td class="cellrowborder" colspan="2" valign="top" headers="mcps1.1.4.1.1 "><p>onChange(callback: (index: number) =&gt; void)</p>
Z
zengyawen 已提交
235
</td>
Z
zengyawen 已提交
236
<td class="cellrowborder" valign="top" headers="mcps1.1.4.1.2 "><p>Tab页签切换后触发的事件。</p>
Z
zengyawen 已提交
237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281
</td>
</tr>
</tbody>
</table>

## 示例<a name="section1131255321814"></a>

```
@Entry
@Component
struct TabsExample {
  private controller: TabsController = new TabsController()

  build() {
    Column() {
      Tabs({ barPosition: BarPosition.Start, index: 1, controller: this.controller }) {
        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 })
  }
}
```

![](figures/Tabs.gif)