• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# EditableTitleBar
2
3
4编辑型标题栏,适用于多选界面或者内容的编辑界面,一般采取左叉右勾的形式。
5
6
7> **说明:**
8>
9> 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
10>
11> 该组件不支持在Wearable设备上使用。
12
13
14## 导入模块
15
16```
17import { EditableTitleBar } from '@kit.ArkUI';
18```
19
20
21## 子组件
22
2324
25## 属性
26不支持[通用属性](ts-component-general-attributes.md)。
27
28
29## EditableTitleBar
30
31EditableTitleBar({leftIconStyle: EditableLeftIconType, imageItem?: EditableTitleBarItem, title: ResourceStr, subtitle?: ResourceStr, menuItems?: Array<EditableTitleBarMenuItem>, isSaveIconRequired: boolean, onSave?: () => void, onCancel?: () =>void, options: EditableTitleBarOptions, contentMargin?: LocalizedMargin, leftIconDefaultFocus?: boolean, saveIconDefaultFocus?: boolean})
32
33**装饰器类型:**\@Component
34
35**系统能力:** SystemCapability.ArkUI.ArkUI.Full
36
37| 名称 | 类型 | 必填 | 装饰器类型 | 说明                                                                                                                                                                                                                                             |
38| -------- | -------- | -------- | -------- |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
39| leftIconStyle | [EditableLeftIconType](#editablelefticontype) | 是 | - | 左侧按钮类型。<br />默认值:EditableLeftIconType.Back,表示返回。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                           |
40| imageItem<sup>12+</sup> | [EditableTitleBarItem](#editabletitlebaritem12) | 否 | - | 用于左侧头像的单个菜单项目。<br />默认值:undefined。<br/>**说明:** 左侧头像不支持配置无障碍属性。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                             |
41| title | [ResourceStr](ts-types.md#resourcestr) | 是 | - | 标题。<br />默认值:'',表示标题内容为空。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                                  |
42| subtitle<sup>12+</sup> | [ResourceStr](ts-types.md#resourcestr) | 否 | - | 副标题。<br />默认值:'',表示副标题内容为空。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                |
43| menuItems | Array&lt;[EditableTitleBarMenuItem](#editabletitlebarmenuitem)&gt; | 否 | - | 右侧菜单项目列表。<br />默认值:undefined。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                              |
44| isSaveIconRequired<sup>12+</sup> | boolean | 是 | - | 是否需要右侧的保存按钮。<br />默认值:true,表示需要右侧的保存按钮。<br/>**说明:** 未使用@Require装饰,构造时不强制校验参数。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                              |
45| onSave | ()&nbsp;=&gt;&nbsp;void | 否 | - | 保存时的动作闭包。<br />默认值:() => void。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                             |
46| onCancel | ()&nbsp;=&gt;&nbsp;void | 否 | - | 当左侧按钮类型为&nbsp;Cancel,触发取消时的动作闭包。<br />默认值:() => void。<br />从API version 12开始,当左侧按钮类型为&nbsp;Back,触发返回时的动作闭包。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                |
47| options<sup>12+</sup> | [EditableTitleBarOptions](#editabletitlebaroptions12) | 是 | - | 标题样式。<br />默认值:<br />{<br />safeAreaTypes: [SafeAreaType.SYSTEM],<br />safeAreaEdges: [SafeAreaEdge.TOP], <br />backgroundColor: '#00000000'<br />}。<br/>**说明:** 未使用@Require装饰,构造时不强制校验参数。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
48| contentMargin<sup>12+</sup> | [LocalizedMargin](ts-types.md#localizedmargin12) | 否 | @Prop | 标题栏外边距,不支持设置负数。<br />默认值:<br /> {start: LengthMetrics.resource(`$r('sys.float.margin_left')`), end: LengthMetrics.resource(`$r('sys.float.margin_right')`)}。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                               |
49| leftIconDefaultFocus<sup>18+</sup> | boolean  | 否 | - | 左侧图标是否为默认焦点。<br />默认值:false,表示不是默认焦点。 <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。                                                                                                                                                               |
50| saveIconDefaultFocus<sup>18+</sup> | boolean  | 否 | - | 保存图标是否为默认焦点。<br />默认值:false,表示不是默认焦点。 <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。                                                                                                                                                               |
51
52> **说明:**
53>
54> 入参对象不可为undefined,即`EditableTitleBar(undefined)`。
55> 若同时有多个可操作区域设置值默认焦点,则设置过默认焦点的可操作区域中显示顺序的第一个为默认焦点。
56
57## EditableLeftIconType
58
59**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
60
61**系统能力:** SystemCapability.ArkUI.ArkUI.Full
62
63| 名称 | 值 | 说明 |
64| -------- | -------- | -------- |
65| Back | 0 | 返回按钮。 |
66| Cancel | 1 | 取消按钮。 |
67
68## EditableTitleBarMenuItem
69
70**系统能力:** SystemCapability.ArkUI.ArkUI.Full
71
72| 名称 | 类型 | 必填 | 说明                                                                                                                                                                                                                                                          |
73| -------- | -------- | -------- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
74| value | [ResourceStr](ts-types.md#resourcestr) | 是 | 图标资源。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                                                                   |
75| symbolStyle<sup>18+</sup> | [SymbolGlyphModifier](ts-universal-attributes-attribute-modifier.md) | 否 | Symbol图标资源,优先级大于value。<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 |
76| label<sup>12+</sup> | [ResourceStr](ts-types.md#resourcestr) | 否 | 图标标签描述。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                                                 |
77| isEnabled | boolean | 否 | 是否启用,默认启用。<br> isEnabled为true时,表示为启用。<br> isEnabled为false时,表示为禁用。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                       |
78| action | ()&nbsp;=&gt;&nbsp;void | 否 | 触发时的动作闭包。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                                                               |
79| accessibilityLevel<sup>18+<sup>       | string  | 否 | 标题栏右侧自定义按钮无障碍重要性。用于控制当前项是否可被无障碍辅助服务所识别。<br/>支持的值为:<br/>"auto":当前组件会转换'yes'。<br/>"yes":当前组件可被无障碍辅助服务所识别。<br/>"no":当前组件不可被无障碍辅助服务所识别。<br/>"no-hide-descendants":当前组件及其所有子组件不可被无障碍辅助服务所识别。<br/>默认值:"auto"。<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 |
80| accessibilityText<sup>18+<sup>        | ResourceStr | 否 | 标题栏右侧自定义按钮的无障碍文本属性。当组件不包含文本属性时,屏幕朗读选中此组件时不播报,使用者无法清楚地知道当前选中了什么组件。为了解决此场景,开发人员可为不包含文字信息的组件设置无障碍文本,当屏幕朗读选中此组件时播报无障碍文本的内容,帮助屏幕朗读的使用者清楚地知道自己选中了什么组件。<br/>默认值:有label默认值为当前项label属性内容,没有设置label时,默认值为“ ”。<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。                                     |
81| accessibilityDescription<sup>18+<sup> | ResourceStr | 否 | 标题栏右侧自定义按钮的无障碍描述。此描述用于向用户详细解释当前组件,开发人员应为组件的这一属性提供较为详尽的文本说明,以协助用户理解即将执行的操作及其可能产生的后果。特别是当这些后果无法仅从组件的属性和无障碍文本中直接获知时。如果组件同时具备文本属性和无障碍说明属性,当组件被选中时,系统将首先播报组件的文本属性,随后播报无障碍说明属性的内容。<br/>默认值为“单指双击即可执行”。<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。           |
82| defaultFocus<sup>18+<sup>             | boolean | 否 | 是否设置为默认获焦。<br/>true: 获焦 <br/>false: 不获焦 <br/>默认值:false <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。                                                                                                                                                 |
83
84## EditableTitleBarItem<sup>12+</sup>
85
86type EditableTitleBarItem = EditableTitleBarMenuItem
87
88**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
89
90**系统能力:** SystemCapability.ArkUI.ArkUI.Full
91
92| 类型 | 说明 |
93| -------- | -------- |
94| [EditableTitleBarMenuItem](#editabletitlebarmenuitem) | 左侧头像的单个菜单类型。 |
95
96## EditableTitleBarOptions<sup>12+</sup>
97
98**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
99
100**系统能力:** SystemCapability.ArkUI.ArkUI.Full
101
102| 名称 | 类型 | 必填 | 说明 |
103| -------- | -------- | -------- | -------- |
104| backgroundColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | 标题栏背景色。<br />默认值: '#00000000'|
105| backgroundBlurStyle | [BlurStyle](ts-universal-attributes-background.md#blurstyle9) | 否 | 标题栏背景模糊样式。<br />默认值: [BlurStyle.NONE]|
106| safeAreaTypes | Array <[SafeAreaType](ts-types.md#safeareatype10)> | 否   | 非必填,配置扩展安全区域的类型。<br />默认值: [SafeAreaType.SYSTEM] |
107| safeAreaEdges  | Array <[SafeAreaEdge](ts-types.md#safeareaedge10)> | 否   | 非必填,配置扩展安全区域的方向。<br />默认值: [SafeAreaEdge.TOP] |
108
109## 事件
110不支持[通用事件](ts-component-general-events.md)。
111
112## 示例
113
114### 示例1(右侧图标自定义标题栏)
115 该示例主要演示EditableTitleBar设置左侧图标、主标题及自定义右侧图标区的效果。
116
117```ts
118import { EditableLeftIconType, EditableTitleBar, Prompt } from '@kit.ArkUI';
119
120@Entry
121@Component
122struct Index {
123  build() {
124    Row() {
125      Column() {
126        Divider().height(2).color(0xCCCCCC)
127        // 左侧取消按钮,右侧保存按钮。
128        EditableTitleBar({
129          leftIconStyle: EditableLeftIconType.Cancel,
130          title: '编辑页面',
131          menuItems: [],
132          onCancel: () => {
133            Prompt.showToast({ message: 'on cancel' });
134          },
135          onSave: () => {
136            Prompt.showToast({ message: 'on save' });
137          }
138        })
139        Divider().height(2).color(0xCCCCCC)
140        // 左侧返回按钮,右侧自定义取消按钮(disabled)、保存按钮。
141        EditableTitleBar({
142          leftIconStyle: EditableLeftIconType.Back,
143          title: '编辑页面',
144          menuItems: [
145            {
146              value: $r('sys.media.ohos_ic_public_cancel'),
147              isEnabled: false,
148              action: () => {
149                Prompt.showToast({ message: 'show toast index 2' });
150              }
151            }
152          ],
153          onSave: () => {
154            Prompt.showToast({ message: 'on save' })
155          }
156        })
157        Divider().height(2).color(0xCCCCCC)
158      }.width('100%')
159    }.height('100%')
160  }
161}
162```
163
164![zh-cn_image_editabletitlebar_example01](figures/zh-cn_image_editabletitlebar_example01.png)
165
166### 示例2(头像与背景模糊标题栏)
167该示例主要演示EditableTitleBar设置背景模糊、头像;取消右侧保存图标及自定义标题栏外边距的效果。
168
169```ts
170import { EditableLeftIconType, EditableTitleBar, LengthMetrics, Prompt, router } from '@kit.ArkUI';
171
172@Entry
173@Component
174struct Index {
175  @State titleBarMargin: LocalizedMargin = {
176    start: LengthMetrics.vp(35),
177    end: LengthMetrics.vp(35),
178  };
179
180  build() {
181    Row() {
182      Column() {
183        EditableTitleBar({
184          leftIconStyle: EditableLeftIconType.Cancel,
185          title: '主标题',
186          subtitle: '副标题',
187          // 设置背景模糊效果
188          options: {
189            backgroundBlurStyle: BlurStyle.COMPONENT_THICK,
190          },
191          onSave: () => {
192            Prompt.showToast({ message: "on save" });
193          },
194        })
195        Divider().height(2).color(0xCCCCCC);
196        EditableTitleBar({
197          leftIconStyle: EditableLeftIconType.Cancel,
198          title: '主标题',
199          subtitle: '副标题',
200          // 取消右侧保存按钮
201          isSaveIconRequired: false,
202        })
203        Divider().height(2).color(0xCCCCCC);
204        EditableTitleBar({
205          leftIconStyle: EditableLeftIconType.Back,
206          title: '主标题',
207          subtitle: '副标题',
208          isSaveIconRequired: false,
209          onCancel: () => {
210            this.getUIContext()?.getRouter()?.back();
211          },
212        })
213        Divider().height(2).color(0xCCCCCC);
214        EditableTitleBar({
215          leftIconStyle: EditableLeftIconType.Back,
216          title: '主标题',
217          subtitle: '副标题',
218          menuItems: [
219            {
220              value: $r('sys.media.ohos_ic_public_remove'),
221              isEnabled: true,
222              action: () => {
223                Prompt.showToast({ message: "show toast index 1" });
224              }
225            }
226          ],
227          isSaveIconRequired: false,
228          // 点击左侧Back图标,触发的动作。
229          onCancel: () => {
230            this.getUIContext()?.getRouter()?.back();
231          },
232        })
233        Divider().height(2).color(0xCCCCCC);
234        EditableTitleBar({
235          leftIconStyle: EditableLeftIconType.Back,
236          title: '主标题',
237          subtitle: '副标题',
238          // 设置可点击头像
239          imageItem: {
240            value: $r('sys.media.ohos_ic_normal_white_grid_image'),
241            isEnabled: true,
242            action: () => {
243              Prompt.showToast({ message: "show toast index 2" });
244            }
245          },
246          // 设置标题栏外边距
247          contentMargin: this.titleBarMargin,
248          // 右侧图标配置
249          menuItems: [
250            {
251              value: $r('sys.media.ohos_ic_public_remove'),
252              isEnabled: true,
253              action: () => {
254                Prompt.showToast({ message: "show toast index 3" });
255              }
256            }
257          ],
258          onCancel: () => {
259            this.getUIContext()?.getRouter()?.back();
260          },
261        })
262      }
263    }
264  }
265}
266```
267
268![zh-cn_image_editabletitlebar_example02](figures/zh-cn_image_editabletitlebar_example02.png)
269
270### 示例3(右侧自定义按钮播报)
271该示例通过设置标题栏的右侧自定义按钮属性accessibilityText、accessibilityDescription、accessibilityLevel自定义屏幕朗读播报文本。
272```ts
273
274import { Prompt, router, EditableLeftIconType, EditableTitleBar } from '@kit.ArkUI';
275
276@Entry
277@Component
278struct Index1 {
279  build() {
280    Row() {
281      Column() {
282        Divider().height(2).color(0xCCCCCC)
283        EditableTitleBar({
284          leftIconStyle: EditableLeftIconType.Cancel,
285          title: '编辑页面',
286          menuItems: [],
287          onCancel: () => {
288            Prompt.showToast({ message: 'on cancel' });
289          },
290          onSave: () => {
291            Prompt.showToast({ message: 'on save' });
292          }
293        })
294        Divider().height(2).color(0xCCCCCC)
295        EditableTitleBar({
296          // 头像、自定义按钮不可用
297          leftIconStyle: EditableLeftIconType.Back,
298          title: '主标题',
299          subtitle: '副标题',
300          imageItem: {
301            value: $r('sys.media.ohos_ic_normal_white_grid_image'),
302            isEnabled: true,
303            action: () => {
304              Prompt.showToast({ message: "show toast index 1" });
305            }
306          },
307          menuItems: [
308            {
309              value: $r('sys.media.ohos_ic_public_remove'),
310              label: '取消',
311              isEnabled: false,
312              accessibilityText: '删除',
313              accessibilityDescription: '点击即可删除',
314              action: () => {
315                Prompt.showToast({ message: "show toast index 2" });
316              }
317            }
318          ],
319          onCancel: () => {
320            this.getUIContext()?.getRouter()?.back();
321          },
322        })
323        Divider().height(2).color(0xCCCCCC)
324      }
325    }
326  }
327}
328```
329![/zh-cn_image_editabletitlebar_example03](figures/zh-cn_image_editabletitlebar_example03.png)
330
331### 示例4(左侧图标设置为默认焦点)
332该示例通过设置标题栏属性leftIconDefaultFocus使左侧图标默认获焦。
333```ts
334
335import { Prompt, EditableLeftIconType, EditableTitleBar } from '@kit.ArkUI';
336
337@Entry
338@Component
339struct Index {
340  build() {
341    Column() {
342      EditableTitleBar({
343        leftIconStyle: EditableLeftIconType.Back,
344        leftIconDefaultFocus: true, //设置左侧图标默认获焦。
345        title: '编辑页面',
346        menuItems: [],
347        onSave: () => {
348          Prompt.showToast({ message: 'on save' });
349        }
350      })
351    }
352    .height('100%')
353    .width('100%')
354  }
355}
356```
357![/editabletitlebarDefaultFocus01](figures/editabletitlebarDefaultFocus01.png)
358
359### 示例5(右侧自定义图标设置为默认焦点)
360该示例通过设置标题栏右侧图标属性defaultFocus使右侧图标默认获焦。
361```ts
362
363import { Prompt, EditableLeftIconType, EditableTitleBar, router } from '@kit.ArkUI';
364
365@Entry
366@Component
367struct Index {
368  build() {
369    Column() {
370      EditableTitleBar({
371        leftIconStyle: EditableLeftIconType.Back,
372        title: '主标题',
373        subtitle: '副标题',
374        // 右侧图标配置
375        menuItems: [
376          {
377            value: $r('sys.media.ohos_ic_public_remove'),
378            isEnabled: true,
379            action: () => {
380              Prompt.showToast({ message: "show toast index 1" });
381            }
382          },
383          {
384            value: $r('sys.media.ohos_ic_public_remove'),
385            isEnabled: true,
386            defaultFocus: true,
387            action: () => {
388              Prompt.showToast({ message: "show toast index 2" });
389            }
390          }
391        ],
392        onCancel: () => {
393          this.getUIContext()?.getRouter()?.back();
394        },
395      })
396    }
397    .height('100%')
398    .width('100%')
399  }
400}
401```
402![/editabletitlebarDefaultFocus02](figures/editabletitlebarDefaultFocus02.png)
403
404### 示例6(设置Symbol类型图标)
405
406该示例通过设置EditableTitleBarMenuItem的属性symbolStyle,展示了自定义Symbol类型图标。
407
408```ts
409import { EditableLeftIconType, EditableTitleBar, Prompt, SymbolGlyphModifier } from '@kit.ArkUI';
410
411@Entry
412@Component
413struct Index {
414  build() {
415    Row() {
416      Column() {
417        Divider().height(2).color(0xCCCCCC)
418        EditableTitleBar({
419          leftIconStyle: EditableLeftIconType.Cancel,
420          title: '主标题',
421          subtitle: '副标题',
422          menuItems: [
423            {
424              value: $r('sys.symbol.house'),
425              isEnabled: true,
426              action: () => {
427                Prompt.showToast({ message: 'show toast index 2' });
428              }
429            },
430            {
431              value: $r('sys.symbol.car'),
432              isEnabled: false,
433            }
434          ],
435        })
436        Divider().height(2).color(0xCCCCCC)
437        EditableTitleBar({
438          leftIconStyle: EditableLeftIconType.Back,
439          title: '主标题',
440          subtitle: '副标题',
441          imageItem: {
442            value: $r('sys.media.ohos_app_icon'),
443            isEnabled: true,
444            action: () => {
445              Prompt.showToast({ message: "show toast index 1" });
446            }
447          },
448          menuItems: [
449            {
450              value: $r('sys.symbol.house'),
451              symbolStyle: new SymbolGlyphModifier($r('sys.symbol.bell')).fontColor([Color.Red]),
452              isEnabled: true,
453              action: () => {
454                Prompt.showToast({ message: 'show toast index 2' });
455              }
456            },
457            {
458              value: $r('sys.symbol.car'),
459              symbolStyle: new SymbolGlyphModifier($r('sys.symbol.heart')).fontColor([Color.Blue]),
460              isEnabled: false,
461            }
462          ],
463        })
464        Divider().height(2).color(0xCCCCCC)
465      }.width('100%')
466    }.height('100%')
467  }
468}
469```
470
471![示例6-EditableTitleBar示例6 设置Symbol类型图标](figures/zh-cn_image_editabletitlebar_demo_06.png)