ts-container-tabcontent.md 3.8 KB
Newer Older
Z
zengyawen 已提交
1 2
# TabContent

Z
zengyawen 已提交
3 4
仅在Tabs中使用,对应一个切换页签的内容视图。

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

Z
zengyawen 已提交
9 10

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

支持单个子组件。


Z
zengyawen 已提交
15 16 17
## 接口

TabContent()
Z
zengyawen 已提交
18

Z
zengyawen 已提交
19 20

## 属性
Z
zengyawen 已提交
21

T
firstt  
tianyu 已提交
22
除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性:
Z
zengyawen 已提交
23

T
firstt  
tianyu 已提交
24 25 26
| 名称 | 参数类型 | 描述 |
| -------- | -------- | -------- |
| tabBar | string&nbsp;\|&nbsp;Resource&nbsp;\|&nbsp;{<br/>icon?:&nbsp;string&nbsp;\|&nbsp;Resource,<br/>text?:&nbsp;string&nbsp;\|&nbsp;Resource<br/>}<br/>\|&nbsp;[CustomBuilder](../../ui/ts-types.md)<sup>8+</sup> | 设置TabBar上显示内容。<br/>CustomBuilder:&nbsp;构造器,内部可以传入组件(API8版本以上适用)。<br/>>&nbsp;&nbsp;**说明:**<br/>>&nbsp;如果icon采用svg格式图源,则要求svg图源删除其自有宽高属性值。如采用带有自有宽高属性的svg图源,icon大小则是svg本身内置的宽高属性值大小。 |
Z
zengyawen 已提交
27

H
geshi  
HelloCrease 已提交
28
>  **说明:**
Z
zengyawen 已提交
29 30
> - TabContent组件不支持设置通用宽度属性,其宽度默认撑满Tabs父组件。
> - TabContent组件不支持设置通用高度属性,其高度由Tabs父组件高度与TabBar组件高度决定。
T
firstt  
tianyu 已提交
31
> - TabContent组件不支持[触摸热区设置](ts-universal-attributes-touch-target.md)。
Z
zengyawen 已提交
32 33 34


## 示例
Z
zengyawen 已提交
35

H
geshi  
HelloCrease 已提交
36 37
```ts
// xxx.ets
Z
zengyawen 已提交
38 39 40 41 42 43 44
@Entry
@Component
struct TabContentExample  {
  @State fontColor: string = 'rgba(0, 0, 0, 0.4)'
  @State selectedFontColor: string = 'rgba(10, 30, 255, 1)'
  @State currentIndex: number = 0
  private controller: TabsController = new TabsController()
Z
zengyawen 已提交
45
  @Builder TabBuilder(index: number) {
Z
zengyawen 已提交
46
    Column() {
Z
zengyawen 已提交
47 48 49 50
      Image(this.currentIndex === index ? '/resources/ic_public_contacts_filled_selected.png' : '/resources/ic_public_contacts_filled.png')
        .width(10)
        .height(10)
        .opacity(this.currentIndex === index ? 1 : 0.4)
Z
zengyawen 已提交
51
        .objectFit(ImageFit.Contain)
Z
zengyawen 已提交
52 53
      Text(`Tab${(index > 2 ? (index - 1) : index) + 1}`)
        .fontColor(this.currentIndex === index ? this.selectedFontColor : this.fontColor)
Z
zengyawen 已提交
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
        .fontSize(10)
        .margin({top: 2})
    }
  }

  @Builder AddBuilder() {
    Column() {
      Image(this.currentIndex === 2 ? '/resources/ic_public_add_norm_filled_selected.png' : '/resources/ic_public_add_norm_filled.png')
        .width(this.currentIndex === 2 ? 26 : 24)
        .height(this.currentIndex === 2 ? 26 : 24)
        .opacity(this.currentIndex === 2 ? 1 : 0.4)
        .objectFit(ImageFit.Contain)
        .animation({duration: 200})
    }
  }

  build() {
    Column() {
Z
zengyawen 已提交
72
      Tabs({ barPosition: BarPosition.End, controller: this.controller }) {
Z
zengyawen 已提交
73
        TabContent() {
W
wzztoone 已提交
74
          Flex({justifyContent: FlexAlign.Center}) {
Z
zengyawen 已提交
75 76
            Text('Tab1').fontSize(32)
          }
Z
zengyawen 已提交
77
        }.tabBar(this.TabBuilder(0))
Z
zengyawen 已提交
78 79

        TabContent() {
W
wzztoone 已提交
80
          Flex({justifyContent: FlexAlign.Center}) {
Z
zengyawen 已提交
81 82
            Text('Tab2').fontSize(32)
          }
Z
zengyawen 已提交
83
        }.tabBar(this.TabBuilder(1))
Z
zengyawen 已提交
84 85

        TabContent() {
W
wzztoone 已提交
86
          Flex({justifyContent: FlexAlign.Center}) {
Z
zengyawen 已提交
87 88
            Text('Add').fontSize(32)
          }
Z
zengyawen 已提交
89
        }.tabBar(this.AddBuilder())
Z
zengyawen 已提交
90 91

        TabContent() {
W
wzztoone 已提交
92
          Flex({justifyContent: FlexAlign.Center}) {
Z
zengyawen 已提交
93 94
            Text('Tab3').fontSize(32)
          }
Z
zengyawen 已提交
95
        }.tabBar(this.TabBuilder(3))
Z
zengyawen 已提交
96 97

        TabContent() {
W
wzztoone 已提交
98
          Flex({justifyContent: FlexAlign.Center}) {
Z
zengyawen 已提交
99 100
            Text('Tab4').fontSize(32)
          }
Z
zengyawen 已提交
101
        }.tabBar(this.TabBuilder(4))
Z
zengyawen 已提交
102 103 104 105 106 107 108 109 110 111 112 113
      }
      .vertical(false)
      .barWidth(300).barHeight(56)
      .onChange((index: number) => {
        this.currentIndex = index
      })
      .width('90%').backgroundColor('rgba(241, 243, 245, 0.95)')
    }.width('100%').height(200).margin({ top: 5 })
  }
}
```

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