• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# SubHeader
2
3
4子标题,用于列表项顶部,将该组列表划分为一个区块,子标题名称用来概括该区块内容。也可以用于内容项顶部,子标题名称用来概括该区块内容。
5
6
7> **说明:**
8>
9> 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
10>
11> 该组件不支持在Wearable设备上使用。
12
13
14## 导入模块
15
16```ts
17import { SubHeader } from '@kit.ArkUI';
18```
19
20
21## 子组件
22
2324
25## 属性
26
27不支持[通用属性](ts-component-general-attributes.md)。
28
29> **说明:**
30>
31> 不支持设置文本相关。
32
33## SubHeader
34
35SubHeader({icon?: ResourceStr, iconSymbolOptions?: SymbolOptions, primaryTitle?: ResourceStr, secondaryTitle?:
36ResourceStr, select?: SelectOptions, operationType?: OperationType, operationItem?: Array<OperationOption>,
37operationSymbolOptions?: Array<SymbolOptions>, primaryTitleModifier?: TextModifier, secondaryTitleModifier?:
38TextModifier, titleBuilder?: () => void, contentMargin?: LocalizedMargin, contentPadding?: LocalizedPadding})
39
40**装饰器类型:**\@Component
41
42**系统能力:** SystemCapability.ArkUI.ArkUI.Full
43
44| 名称 | 类型 | 必填 | 装饰器类型         | 说明 |
45| -------- | -------- | -------- |---------------| -------- |
46| icon | [ResourceStr](ts-types.md#resourcestr) | 否 | \@Prop        | 图标设置项。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
47| iconSymbolOptions<sup>12+</sup> | [SymbolOptions](#symboloptions12) | 否 | -             | icon为[Symbol资源](ts-basic-components-symbolGlyph.md)时的设置项。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
48| primaryTitle | [ResourceStr](ts-types.md#resourcestr) | 否 | \@Prop        | 标题内容。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
49| secondaryTitle | [ResourceStr](ts-types.md#resourcestr) | 否 | \@Prop        | 副标题内容。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
50| select | [SelectOptions](#selectoptions) | 否 | -             | select内容以及事件。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
51| operationType | [OperationType](#operationtype) | 否 | \@Prop        | 操作区(右侧)元素样式。<br/>默认值:OperationType.BUTTON<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
52| operationItem | Array&lt;[OperationOption](#operationoption)&gt; | 否 | -             | 操作区(右侧)的设置项。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
53| operationSymbolOptions<sup>12+</sup> | Array&lt;[SymbolOptions](#symboloptions12)&gt; | 否 | -             | operationType为OperationType.ICON_GROUP,<br/>operationItem设置多个图标,图标为[Symbol资源](ts-basic-components-symbolGlyph.md)时的设置项。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
54| primaryTitleModifier<sup>12+</sup> | [TextModifier](ts-universal-attributes-attribute-modifier.md) | 否 | -             | 设置标题文本属性,如设置标题颜色、字体大小、字重等。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
55| secondaryTitleModifier<sup>12+</sup> | [TextModifier](ts-universal-attributes-attribute-modifier.md) | 否 | -             | 设置副标题文本属性,如设置标题颜色、字体大小、字重等。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
56| titleBuilder<sup>12+</sup> | () => void | 否 | @BuilderParam | 自定义标题区内容<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
57| contentMargin<sup>12+</sup> | [LocalizedMargin](ts-types.md#localizedmargin12) | 否 | @Prop         | 子标题外边距,不支持设置负数。<br />默认值:<br /> `{start: LengthMetrics.resource(` <br /> `$r('sys.float.margin_left'))`, <br /> `end: LengthMetrics.resource(` <br /> `$r('sys.float.margin_right'))}`<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
58| contentPadding<sup>12+</sup> | [LocalizedPadding](ts-types.md#localizedpadding12) | 否 | @Prop         | 子标题内边距。<br />默认值:<br />左侧为副标题或副标题加图标时:<br /> {start: LengthMetrics.vp(12), end: LengthMetrics.vp(12)}。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
59
60
61## OperationType
62
63**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
64
65**系统能力:** SystemCapability.ArkUI.ArkUI.Full
66
67| 名称 | 值 | 说明 |
68| -------- | -------- | -------- |
69| TEXT_ARROW |  0  | 文本按钮(带右箭头)。 |
70| BUTTON |  1  |  文本按钮(不带右箭头)。 |
71| ICON_GROUP |  2  |  图标按钮(最多支持配置三张图标)。 |
72| LOADING |  3  |  加载动画。 |
73
74## SelectOptions
75
76**系统能力:** SystemCapability.ArkUI.ArkUI.Full
77
78| 名称 | 类型 | 必填 | 说明                                                                                                                                                           |
79| -------- | -------- | -------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------|
80| options | Array&lt;[SelectOption](ts-basic-components-select.md#selectoption对象说明)&gt; | 是 | 下拉选项内容。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                 |
81| selected | number | 否 | 设置下拉菜单初始选项的索引。<br/>取值范围:大于等于-1。<br/>第一项的索引为0。<br/>当不设置selected属性时,默认选择值为-1,菜单项不选中。<br/>若设置数值小于-1,按不选中处理。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
82| value | string | 否 | 设置下拉按钮本身的文本内容。<br/>默认值:空字符串。<br/>**说明**:如果文本大于列宽时,文本被截断。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                 |
83| onSelect | (index:&nbsp;number,&nbsp;value?:&nbsp;string)&nbsp;=&gt;&nbsp;void | 否 | 下拉菜单选中某一项的回调。<br/>-&nbsp;index:选中项的索引。<br/>-&nbsp;value:选中项的值。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                           |
84| defaultFocus<sup>18+</sup> | boolean | 否 | 下拉按钮是否为默认焦点。<br/>true:下拉按钮是默认焦点。<br/>false:下拉按钮不是默认焦点。<br />默认值:false <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。                                 |
85
86## OperationOption
87
88**系统能力:** SystemCapability.ArkUI.ArkUI.Full
89
90| 名称 | 类型 | 必填 | 说明                                                                                                                                                                                                                                                       |
91| -------- | -------- | -------- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
92| value | [ResourceStr](ts-types.md#resourcestr) | 是 | 文本内容。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                                                                                                                    |
93| action | ()=&gt;void | 否 | 事件。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                                                                                                                      |
94| accessibilityLevel<sup>18+<sup>       | string  | 否 | 子标题右侧按钮无障碍重要性。用于控制当前项是否可被无障碍辅助服务所识别。<br/>支持的值为:<br/>"auto":当前组件会转换'yes'。<br/>"yes":当前组件可被无障碍辅助服务所识别。<br/>"no":当前组件不可被无障碍辅助服务所识别。<br/>"no-hide-descendants":当前组件及其所有子组件不可被无障碍辅助服务所识别。<br/>默认值:"auto"。<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 |
95| accessibilityText<sup>18+<sup>        | ResourceStr | 否 | 子标题右侧按钮的无障碍文本属性。当组件不包含文本属性时,屏幕朗读选中此组件时不播报,使用者无法清楚地知道当前选中了什么组件。为了解决此场景,开发人员可为不包含文字信息的组件设置无障碍文本,当屏幕朗读选中此组件时播报无障碍文本的内容,帮助屏幕朗读的使用者清楚地知道自己选中了什么组件。<br/>默认值:类型为TEXT_ARROW和BUTTON时默认值为当前项value属性内容,其他类型默认值为“ ”。<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 |
96| accessibilityDescription<sup>18+<sup> | ResourceStr | 否 | 子标题右侧按钮的无障碍描述。此描述用于向用户详细解释当前组件,开发人员应为组件的这一属性提供较为详尽的文本说明,以协助用户理解即将执行的操作及其可能产生的后果。特别是当这些后果无法仅从组件的属性和无障碍文本中直接获知时。如果组件同时具备文本属性和无障碍说明属性,当组件被选中时,系统将首先播报组件的文本属性,随后播报无障碍说明属性的内容。<br/>默认值:类型为LOADING时,默认值为“正在加载”,其他类型默认值为“单指双击即可执行”。<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。        |
97| defaultFocus<sup>18+</sup> | boolean | 否 | 子标题右侧按钮是否为默认焦点。<br/>true:子标题右侧按钮是默认焦点。<br/>false:子标题右侧按钮不是默认焦点。<br />默认值:false <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。                                                                                                                                            |
98## SymbolOptions<sup>12+</sup>
99
100**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
101
102**系统能力:** SystemCapability.ArkUI.ArkUI.Full
103
104| 名称 | 类型 | 必填 | 说明                                                                                                                                                                                                                                              |
105| -------- | -------- | -------- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
106| fontColor | Array&lt;[ResourceColor](ts-types.md#resourcecolor)&gt; | 否 | 设置[Symbol资源](ts-basic-components-symbolGlyph.md)颜色。<br/>默认值:不同渲染策略下默认值不同。                                                                                                                                                                       |
107| fontSize | number \|string \|[Resource](ts-types.md#Resource) | 否 | 设置[Symbol资源](ts-basic-components-symbolGlyph.md)大小。<br/>取值范围:大于等于0。<br/>默认值:系统默认值。                                                                                                                                                              |
108| fontWeight | number \|&nbsp;[FontWeight](ts-appendix-enums.md#fontweight)&nbsp;\|&nbsp;string | 否 | 设置[Symbol资源](ts-basic-components-symbolGlyph.md)粗细。<br/>number类型取值[100,900],取值间隔为100,默认为400,取值越大,字体越粗。<br/>string类型仅支持number类型取值的字符串形式,例如“400”,以及“bold”、“bolder”、“lighter”、“regular” 、“medium”分别对应FontWeight中相应的枚举值。<br/>默认值:FontWeight.Normal。 |
109| renderingStrategy | [SymbolRenderingStrategy](ts-basic-components-symbolGlyph.md#symbolrenderingstrategy11枚举说明) | 否 | 设置[Symbol资源](ts-basic-components-symbolGlyph.md)渲染策略。<br/>默认值:SymbolRenderingStrategy.SINGLE。<br/>**说明:**<br/>$r('sys.symbol.ohos_*')中引用的资源仅ohos_trash_circle、ohos_folder_badge_plus、ohos_lungs支持分层与多色模式。                                       |
110| effectStrategy | [SymbolEffectStrategy](ts-basic-components-symbolGlyph.md#symboleffectstrategy11枚举说明) | 否 | 设置[Symbol资源](ts-basic-components-symbolGlyph.md)动效策略。<br/>默认值:SymbolEffectStrategy.NONE。<br/>**说明:**<br/>$r('sys.symbol.ohos_*')中引用的资源仅ohos_wifi支持层级动效模式。                                                                                       |
111
112## 事件
113不支持[通用事件](ts-component-general-events.md)。
114
115## 示例
116### 示例1(效率型子标题)
117该示例主要演示子标题左侧为icon、secondaryTitle,右侧operationType为按钮类型。
118
119```ts
120import { Prompt, OperationType, SubHeader } from '@kit.ArkUI';
121
122@Entry
123@Component
124struct SubHeaderExample {
125  build() {
126    Column() {
127      SubHeader({
128        icon: $r('sys.media.ohos_ic_public_email'),
129        secondaryTitle: '二级标题',
130        operationType: OperationType.BUTTON,
131        operationItem: [{
132          value: '操作',
133          action: () => {
134            Prompt.showToast({ message: 'demo' });
135          }
136        }]
137      })
138    }
139  }
140}
141```
142
143![zh-cn_image_subheader_example01](figures/zh-cn_image_subheader_example01.png)
144
145### 示例2(双行文本内容型子标题)
146该示例主要演示子标题左侧为primaryTitle、secondaryTitle,右侧operationType类型为TEXT_ARROW。
147
148```ts
149import { Prompt, OperationType, SubHeader } from '@kit.ArkUI';
150
151@Entry
152@Component
153struct SubHeaderExample {
154  build() {
155    Column() {
156      SubHeader({
157        primaryTitle: '一级标题',
158        secondaryTitle: '二级标题',
159        operationType: OperationType.TEXT_ARROW,
160        operationItem: [{
161          value: '更多',
162          action: () => {
163            Prompt.showToast({ message: 'demo' });
164          }
165        }]
166      })
167    }
168  }
169}
170```
171
172![子标题2](figures/zh-cn_image_subheader_example02.png)
173
174### 示例3(spinner型内容型子标题)
175该示例主要演示子标题左侧为select,右侧operationType类型为ICON_GROUP。
176
177```ts
178import { Prompt, OperationType, SubHeader } from '@kit.ArkUI';
179
180@Entry
181@Component
182struct SubHeaderExample {
183  build() {
184    Column() {
185      SubHeader({
186        // 左侧为select选择器
187        select: {
188          options: [{ value: 'aaa' }, { value: 'bbb' }, { value: 'ccc' }],
189          value: 'selectDemo',
190          selected: 2,
191          onSelect: () => {
192            Prompt.showToast({ message: 'demo' });
193          }
194        },
195        operationType: OperationType.ICON_GROUP,
196        // 右侧为三个icon图标
197        operationItem: [{
198          value: $r('sys.media.ohos_ic_public_email'),
199          action: () => {
200            Prompt.showToast({ message: 'demo' })
201          }
202        }, {
203          value: $r('sys.media.ohos_ic_public_email'),
204          action: () => {
205            Prompt.showToast({ message: 'demo' });
206          }
207        }, {
208          value: $r('sys.media.ohos_ic_public_email'),
209          action: () => {
210            Prompt.showToast({ message: 'demo' });
211          }
212        }]
213      })
214    }
215  }
216}
217```
218
219![zh-cn_image_subheader_example03](figures/zh-cn_image_subheader_example03.png)
220
221### 示例4(设置左侧symbol图标)
222该示例主要演示子标题左侧icon设置symbol图标。
223
224```ts
225
226import { Prompt, OperationType, SubHeader } from '@kit.ArkUI';
227
228@Entry
229@Component
230struct SubHeaderExample {
231  build() {
232    Column() {
233      SubHeader({
234        // 设置icon为symbol图标
235        icon: $r('sys.symbol.ohos_wifi'),
236        iconSymbolOptions: {
237          effectStrategy: SymbolEffectStrategy.HIERARCHICAL,
238        },
239        secondaryTitle: '标题',
240        operationType: OperationType.BUTTON,
241        operationItem: [{
242          value: '操作',
243          action: () => {
244            Prompt.showToast({ message: 'demo' });
245          }
246        }]
247      })
248    }
249  }
250}
251```
252
253![子标题4](figures/zh-cn_image_subheader_example04.gif)
254
255### 示例5(设置右侧symbol图标)
256该示例主要演示子标题operationType设置为OperationType.ICON_GROUP,operationItem的value设置为symbol图标。
257
258```ts
259import { Prompt, OperationType, SubHeader } from '@kit.ArkUI';
260
261@Entry
262@Component
263struct SubHeaderExample {
264  build() {
265    Column() {
266      SubHeader({
267        // 设置左侧select
268        select: {
269          options: [{ value: 'aaa' }, { value: 'bbb' }, { value: 'ccc' }],
270          value: 'selectDemo',
271          selected: 2,
272          onSelect: () => {
273            Prompt.showToast({ message: 'demo' });
274          }
275        },
276        operationType: OperationType.ICON_GROUP,
277        // 设置右侧icon
278        operationItem: [{
279          value: $r('sys.symbol.ohos_lungs'),
280          action: () => {
281            Prompt.showToast({ message: 'icon1' });
282          }
283        }, {
284          value: $r('sys.symbol.ohos_lungs'),
285          action: () => {
286            Prompt.showToast({ message: 'icon2' });
287          }
288        }, {
289          value: $r('sys.symbol.ohos_lungs'),
290          action: () => {
291            Prompt.showToast({ message: 'icon3' });
292          }
293        }],
294        // 设置右侧icon图标symbol样式
295        operationSymbolOptions: [{
296          fontWeight: FontWeight.Lighter,
297        }, {
298          renderingStrategy: SymbolRenderingStrategy.MULTIPLE_COLOR,
299          fontColor: [Color.Blue, Color.Grey, Color.Green],
300        }, {
301          renderingStrategy: SymbolRenderingStrategy.MULTIPLE_OPACITY,
302          fontColor: [Color.Blue, Color.Grey, Color.Green],
303        }]
304      })
305    }
306  }
307}
308```
309
310![zh-cn_image_subheader_example05](figures/zh-cn_image_subheader_example05.png)
311
312### 示例6(自定义标题内容)
313 该示例主要演示SubHeader设置titleBuilder自定义标题内容的效果。
314
315```ts
316import { Prompt, OperationType, SubHeader } from '@kit.ArkUI';
317
318@Entry
319@Component
320struct SubHeaderExample {
321  // 自定义左侧标题
322  @Builder
323  TitleBuilder(): void {
324    Text('自定义标题')
325      .fontSize(24)
326      .fontColor(Color.Blue)
327      .fontWeight(FontWeight.Bold)
328  }
329
330  build() {
331    Column() {
332      SubHeader({
333        // 调用TitleBuilder
334        titleBuilder: () => {
335          this.TitleBuilder();
336        },
337        primaryTitle: '一级标题',
338        secondaryTitle: '二级标题',
339        icon: $r('sys.symbol.ohos_star'),
340        operationType: OperationType.TEXT_ARROW,
341        operationItem: [{
342          value: '更多信息',
343          action: () => {
344            Prompt.showToast({ message: 'demo' });
345          }
346        }]
347      })
348    }
349  }
350}
351```
352![zh-cn_image_subheader_example06](figures/zh-cn_image_subheader_example06.png)
353
354### 示例7(自定义标题样式)
355该示例主要演示SubHeader设置标题和副标题字体样式以及标题内外边距的效果。
356
357```ts
358import { Prompt, OperationType, SubHeader, LengthMetrics, TextModifier } from '@kit.ArkUI';
359
360@Entry
361@Component
362struct SubHeaderExample {
363  // 设置主副标题文本颜色
364  @State primaryModifier: TextModifier = new TextModifier().fontColor(Color.Blue);
365  @State secondaryModifier: TextModifier = new TextModifier().fontColor(Color.Blue);
366
367  build() {
368    Column() {
369      SubHeader({
370        primaryTitle: 'primaryTitle',
371        secondaryTitle: 'secondaryTitle',
372        primaryTitleModifier: this.primaryModifier,
373        secondaryTitleModifier: this.secondaryModifier,
374        operationType: OperationType.TEXT_ARROW,
375        operationItem: [{
376          value: '更多信息',
377          action: () => {
378            Prompt.showToast({ message: 'demo' });
379          }
380        }],
381        // 标题内外间距
382        contentMargin: { start: LengthMetrics.vp(20), end: LengthMetrics.vp(20) },
383        contentPadding: { start: LengthMetrics.vp(20), end: LengthMetrics.vp(20) }
384      })
385    }
386  }
387}
388```
389
390![子标题7](figures/zh-cn_image_subheader_example07.png)
391
392
393### 示例8(右侧按钮自定义播报)
394该示例通过设置subheader的右侧按钮属性accessibilityText、accessibilityDescription、accessibilityLevel自定义屏幕朗读播报文本。
395```ts
396import { Prompt, OperationType, SubHeader } from '@kit.ArkUI';
397
398@Entry
399@Component
400struct SubHeaderExample {
401  build() {
402    Column() {
403      Divider().color('grey').width('100%').height('2vp')
404      SubHeader({
405        // 图标+二级标题, 右侧button
406        icon: $r('sys.media.ohos_ic_public_email'),
407        secondaryTitle: '二级标题',
408        operationType: OperationType.BUTTON,
409        operationItem: [{
410          value: '操作',
411          action: () => {
412            Prompt.showToast({ message: 'demo' })
413          }
414        }]
415      })
416      Divider().color('grey').width('100%').height('2vp')
417      SubHeader({
418        // 右侧text_arrow
419        primaryTitle: '一级标题',
420        secondaryTitle: '二级标题',
421        operationType: OperationType.TEXT_ARROW,
422        operationItem: [{
423          value: '更多',
424          action: () => {
425            Prompt.showToast({ message: 'demo' })
426          }
427        }]
428      })
429      Divider().color('grey').width('100%').height('2vp')
430      SubHeader({
431        //左侧select 右侧是icon_(依次获焦)
432        select: {
433          options: [{ value: 'aaa' }, { value: 'bbb' }, { value: 'ccc' }],
434          value: 'selectDemo',
435          selected: 0,
436          onSelect: (index: number, value?: string) => {
437            console.log(`subheader onselect index : ${index}, value: ${value}`);
438          }
439        },
440        operationType: OperationType.ICON_GROUP,
441        operationItem: [{
442          value: $r('sys.media.ohos_ic_public_email'),
443          accessibilityText: '图标1',
444          accessibilityLevel: 'yes',
445        }, {
446          value: $r('sys.media.ohos_ic_public_email'),
447          accessibilityText: '图标2',
448          accessibilityLevel: 'no',
449        }, {
450          value: $r('sys.media.ohos_ic_public_email'),
451          accessibilityText: '图标3',
452          accessibilityDescription: '点击操作图标3',
453        }]
454      })
455      Divider().color('grey').width('100%').height('2vp')
456    }
457  }
458}
459```
460![figures/zh-cn_image_subheader_example08](figures/zh-cn_image_subheader_example08.png)
461
462### 示例9(右侧按钮设置默认获焦)
463该示例通过设置subheader的右侧按钮属性defaultFocus使其默认获焦。
464```ts
465import { Prompt, OperationType, SubHeader } from '@kit.ArkUI';
466
467@Entry
468@Component
469struct SubHeaderExample {
470  build() {
471    Column() {
472      SubHeader({
473        // 图标+二级标题, 右侧button
474        icon: $r('app.media.app_icon'),
475        secondaryTitle: '二级标题',
476        operationType: OperationType.BUTTON,
477        operationItem: [{
478          value: '操作',
479          defaultFocus: true,
480          action: () => {
481            Prompt.showToast({ message: 'demo' })
482          }
483        }]
484      })
485    }
486  }
487}
488```
489![/SubHeaderDefaultFocus](figures/SubHeaderDefaultFocus.png)
490