harmony 鸿蒙SelectTitleBar
SelectTitleBar
The SelectTitleBar component represents a drop-down menu title bar - a title bar that contains a drop-down menu - for switching between pages of different levels (configured with the Back button).
NOTE
This component is supported since API version 10. Updates will be marked with a superscript to indicate their earliest API version.
Modules to Import
import { SelectTitleBar } from '@kit.ArkUI'
Child Components
Not supported
Attributes
The universal attributes are not supported.
SelectTitleBar
SelectTitleBar({selected: number, options: Array<SelectOption>, menuItems?: Array<SelectTitleBarMenuItem>, subtitle?: ResourceStr, badgeValue?: number, hidesBackButton?: boolean, onSelected?: (index: number) => void})
Decorator: @Component
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.ArkUI.ArkUI.Full
Name | Type | Mandatory | Decorator | Description |
---|---|---|---|---|
selected | number | Yes | \@Prop | Index of the currently selected item. The index of the first item is 0. If this attribute is not set, the default value 0 will be used. |
options | Array<SelectOption> | Yes | - | Options in the drop-down menu. |
menuItems | Array<SelectTitleBarMenuItem> | No | - | List of menu items on the right of the title bar. |
subtitle | ResourceStr | No | - | Subtitle. |
badgeValue | number | No | - | Value for the badge. Value range: [-2147483648, 2147483647] If the value is out of the range, 4294967296 is added or subtracted so that the value is within the range. If the value is not an integer, it is rounded off to the nearest integer. For example, 5.5 is rounded off to 5. NOTE The badge will not be displayed if the value is less than or equal to 0. The maximum number of messages is 99. If this limit is exceeded, only 99+ is displayed. Extremely large values are considered exceptional and will result in the badge not being displayed. |
hidesBackButton | boolean | No | - | Whether to hide the back arrow on the left. Default value: false The value true means to hide the provider, and false means the opposite. |
onSelected | (index: number) => void | No | - | Callback invoked when an option in the drop-down menu is selected. The index of the selected option is passed in. |
NOTE
The input parameter cannot be undefined, that is, calling SelectTitleBar(undefined) is not allowed.
SelectTitleBarMenuItem
System capability: SystemCapability.ArkUI.ArkUI.Full
Name | Type | Mandatory | Description |
---|---|---|---|
value | ResourceStr | Yes | Icon resource. Atomic service API: This API can be used in atomic services since API version 11. |
symbolStyle18+ | SymbolGlyphModifier | No | Symbol icon resource, which has higher priority than value. Atomic service API: This API can be used in atomic services since API version 18. |
label13+ | ResourceStr | No | Icon label. Atomic service API: This API can be used in atomic services since API version 13. |
isEnabled | boolean | No | Whether to enable the item. Default value: false The value true means to enable the item, and false means the opposite. Atomic service API: This API can be used in atomic services since API version 11. |
action | () => void | No | Action to perform. Atomic service API: This API can be used in atomic services since API version 11. |
accessibilityLevel18+ | string | No | Accessibility level. It determines whether the component can be recognized by accessibility services. The options are as follows: “auto”: It is treated as “yes” by the system. “yes”: The component can be recognized by accessibility services. “no”: The component cannot be recognized by accessibility services. “no-hide-descendants”: Neither the component nor its child components can be recognized by accessibility services. Default value: “auto” Atomic service API: This API can be used in atomic services since API version 18. |
accessibilityText18+ | ResourceStr | No | Accessibility text, that is, accessible label name. If a component does not contain text information, it will not be announced by the screen reader when selected. In this case, the screen reader user cannot know which component is selected. To solve this problem, you can set accessibility text for components without text information. When such a component is selected, the screen reader announces the specified accessibility text, informing the user which component is selected. Default value: value of the label property if it is set and an empty string otherwise. Atomic service API: This API can be used in atomic services since API version 18. |
accessibilityDescription18+ | ResourceStr | No | Accessible description. You can provide comprehensive text explanations to help users understand the operation they are about to perform and its potential consequences, especially when these cannot be inferred from the component’s attributes and accessibility text alone. If a component contains both text information and the accessible description, the text is announced first and then the accessible description, when the component is selected. Default value: “Double-tap to activate” Atomic service API: This API can be used in atomic services since API version 18. |
Events
The universal events are not supported.
Example
Example 1: Implementing a Simple Drop-down Menu Title Bar
This example demonstrates how to implement a simple drop-down menu title bar with various configurations, including one with a back arrow and one with a right-side menu item list.
import { SelectTitleBar, promptAction, SelectTitleBarMenuItem } from '@kit.ArkUI'
@Entry
@Component
struct Index {
// Define an array of menu items for the right side of the title bar.
private menuItems: Array<SelectTitleBarMenuItem> =
[
{
// Resource for the menu icon.
value: $r('sys.media.ohos_save_button_filled'),
// Enable the image.
isEnabled: true,
// Action triggered when the menu item is clicked.
action: () => promptAction.showToast({ message: 'show toast index 1' }),
},
{
value: $r('sys.media.ohos_ic_public_copy'),
isEnabled: true,
action: () => promptAction.showToast({ message: 'show toast index 2' }),
},
{
value: $r('sys.media.ohos_ic_public_edit'),
isEnabled: true,
action: () => promptAction.showToast({ message: 'show toast index 3' }),
},
{
value: $r('sys.media.ohos_ic_public_remove'),
isEnabled: true,
action: () => promptAction.showToast({ message: 'show toast index 4' }),
},
]
build() {
Row() {
Column() {
Divider().height(2).color(0xCCCCCC)
SelectTitleBar({
// Define items in the drop-down list.
options: [
{ value: 'All photos' },
{ value: 'Local (device)' },
{ value: 'Local (memory card)'}
],
// Initially select the first item in the drop-down list.
selected: 0,
// Function triggered when the item is selected.
onSelected: (index) => promptAction.showToast({ message: 'page index ' + index }),
// Hide the back arrow on the left.
hidesBackButton: true,
})
Divider().height(2).color(0xCCCCCC)
SelectTitleBar({
options: [
{ value: 'All photos' },
{ value: 'Local (device)' },
{ value: 'Local (memory card)' },
],
selected: 0,
onSelected: (index) => promptAction.showToast({ message: 'page index ' + index }),
hidesBackButton: false,
})
Divider().height(2).color(0xCCCCCC)
SelectTitleBar({
options: [
{ value: 'All photos' },
{ value: 'Local (device)' },
{ value: 'Local (memory card)' },
],
selected: 1,
onSelected: (index) => promptAction.showToast({ message: 'page index ' + index }),
subtitle: 'example@example.com',
})
Divider().height(2).color(0xCCCCCC)
SelectTitleBar({
options: [
{ value: 'All photos' },
{ value: 'Local (device)' },
{ value: 'Local (memory card)' },
],
selected: 1,
onSelected: (index) => promptAction.showToast({ message: 'page index ' + index }),
subtitle: 'example@example.com',
menuItems: [{ isEnabled: true, value: $r('sys.media.ohos_save_button_filled'),
action: () => promptAction.showToast({ message: 'show toast index 1' }),
}],
})
Divider().height(2).color(0xCCCCCC)
SelectTitleBar({
options: [
{ value: 'All photos' },
{ value: 'Local (device)' },
{ value: 'Local (memory card)' },
],
selected: 0,
onSelected: (index) => promptAction.showToast({ message: 'page index ' + index }),
subtitle: 'example@example.com',
menuItems: this.menuItems,
badgeValue: 99,
hidesBackButton: true,
})
Divider().height(2).color(0xCCCCCC)
}.width('100%')
}.height('100%')
}
}
Example 2: Implementing Screen Reader Announcement for the Custom Button on the Right Side
This example customizes the screen reader announcement text by setting the accessibilityText, accessibilityDescription, and accessibilityLevel properties of the custom button on the right side of the title bar.
import { SelectTitleBar, promptAction, SelectTitleBarMenuItem } from '@kit.ArkUI'
@Entry
@Component
struct Index {
// Define an array of menu items for the right side of the title bar.
private menuItems: Array<SelectTitleBarMenuItem> =
[
{
// Resource for the menu icon.
value: $r('sys.media.ohos_save_button_filled'),
// Enable the image.
isEnabled: true,
// Action triggered when the menu item is clicked.
action: () => promptAction.showToast({ message: 'show toast index 1' }),
// The screen reader will prioritize this text over the label.
accessibilityText: 'Save',
// The screen reader can focus on this item.
accessibilityLevel: 'yes',
// The screen reader will ultimately announce this text.
accessibilityDescription: 'Tap to save the icon',
},
{
value: $r('sys.media.ohos_ic_public_copy'),
isEnabled: true,
action: () => promptAction.showToast({ message: 'show toast index 2' }),
accessibilityText: 'Copy',
// The screen reader will not focus on this item.
accessibilityLevel: 'no',
accessibilityDescription: 'Tap to copy the icon',
},
{
value: $r('sys.media.ohos_ic_public_edit'),
isEnabled: true,
action: () => promptAction.showToast({ message: 'show toast index 3' }),
accessibilityText: 'Edit',
accessibilityLevel: 'yes',
accessibilityDescription: 'Tap to edit the icon',
},
{
value: $r('sys.media.ohos_ic_public_remove'),
isEnabled: true,
action: () => promptAction.showToast({ message: "show toast index 4" }),
accessibilityText: 'Remove',
accessibilityLevel: 'yes',
accessibilityDescription: 'Tap to remove the icon',
}
]
build() {
Row() {
Column() {
Divider().height(2).color(0xCCCCCC)
SelectTitleBar({
// Define items in the drop-down list.
options: [
{ value: 'All photos' },
{ value: 'Local (device)' },
{ value: 'Local (memory card)' },
],
// Initially select the first item in the drop-down list.
selected: 0,
// Function triggered when the item is selected.
onSelected: (index) => promptAction.showToast({ message: 'page index ' + index }),
// Hide the back arrow on the left.
hidesBackButton: true,
})
Divider().height(2).color(0xCCCCCC)
SelectTitleBar({
options: [
{ value: 'All photos' },
{ value: 'Local (device)' },
{ value: 'Local (memory card)' },
],
selected: 0,
onSelected: (index) => promptAction.showToast({ message: 'page index ' + index }),
hidesBackButton: false,
})
Divider().height(2).color(0xCCCCCC)
SelectTitleBar({
options: [
{ value: 'All photos' },
{ value: 'Local (device)' },
{ value: 'Local (memory card)' },
],
selected: 1,
onSelected: (index) => promptAction.showToast({ message: 'page index ' + index }),
subtitle: 'example@example.com',
})
Divider().height(2).color(0xCCCCCC)
SelectTitleBar({
options: [
{ value: 'All photos' },
{ value: 'Local (device)' },
{ value: 'Local (memory card)' },
],
selected: 1,
onSelected: (index) => promptAction.showToast({ message: 'page index ' + index }),
subtitle: 'example@example.com',
menuItems: [{ isEnabled: true, value: $r('sys.media.ohos_save_button_filled'),
action: () => promptAction.showToast({ message: 'show toast index 1' }),
}],
})
Divider().height(2).color(0xCCCCCC)
SelectTitleBar({
options: [
{ value: 'All photos' },
{ value: 'Local (device)' },
{ value: 'Local (memory card)' },
],
selected: 0,
onSelected: (index) => promptAction.showToast({ message: 'page index ' + index }),
subtitle: 'example@example.com',
menuItems: this.menuItems,
badgeValue: 99,
hidesBackButton: true,
})
Divider().height(2).color(0xCCCCCC)
}.width('100%')
}.height('100%')
}
}
Example 3: Setting the Symbol Icon
This example demonstrates how to use symbolStyle in SelectTitleBarMenuItem to set custom symbol icons.
import { SelectTitleBar, promptAction, SelectTitleBarMenuItem, SymbolGlyphModifier } from '@kit.ArkUI'
@Entry
@Component
struct Index {
// Define an array of menu items for the right side of the title bar.
private menuItems: Array<SelectTitleBarMenuItem> =
[
{
// Resource for the menu icon.
value: $r('sys.media.ohos_save_button_filled'),
// Resource for the menu symbol icon.
symbolStyle: new SymbolGlyphModifier($r('sys.symbol.save')),
// Enable the image.
isEnabled: true,
// Action triggered when the menu item is clicked.
action: () => promptAction.showToast({ message: 'show toast index 1' }),
// The screen reader will prioritize this text over the label.
accessibilityText: 'Save',
// The screen reader can focus on this item.
accessibilityLevel: 'yes',
// The screen reader will ultimately announce this text.
accessibilityDescription: 'Tap to save the icon',
},
{
value: $r('sys.media.ohos_ic_public_copy'),
symbolStyle: new SymbolGlyphModifier($r('sys.symbol.car')),
isEnabled: true,
action: () => promptAction.showToast({ message: 'show toast index 2' }),
accessibilityText: 'Copy',
// The screen reader will not focus on this item.
accessibilityLevel: 'no',
accessibilityDescription: 'Tap to copy the icon',
},
{
value: $r('sys.media.ohos_ic_public_edit'),
symbolStyle: new SymbolGlyphModifier($r('sys.symbol.ai_edit')),
isEnabled: true,
action: () => promptAction.showToast({ message: 'show toast index 3' }),
accessibilityText: 'Edit',
accessibilityLevel: 'yes',
accessibilityDescription: 'Tap to edit the icon',
},
{
value: $r('sys.media.ohos_ic_public_remove'),
symbolStyle: new SymbolGlyphModifier($r('sys.symbol.remove_songlist')),
isEnabled: true,
action: () => promptAction.showToast({ message: "show toast index 4" }),
accessibilityText: 'Remove',
accessibilityLevel: 'yes',
accessibilityDescription: 'Tap to remove the icon',
}
]
build() {
Row() {
Column() {
Divider().height(2).color(0xCCCCCC)
SelectTitleBar({
// Define items in the drop-down list.
options: [
{ value: 'All photos' },
{ value: 'Local (device)' },
{ value: 'Local (memory card)' },
],
// Initially select the first item in the drop-down list.
selected: 0,
// Function triggered when the item is selected.
onSelected: (index) => promptAction.showToast({ message: 'page index ' + index }),
// Hide the back arrow on the left.
hidesBackButton: true,
})
Divider().height(2).color(0xCCCCCC)
SelectTitleBar({
options: [
{ value: 'All photos' },
{ value: 'Local (device)' },
{ value: 'Local (memory card)' },
],
selected: 0,
onSelected: (index) => promptAction.showToast({ message: 'page index ' + index }),
hidesBackButton: false,
})
Divider().height(2).color(0xCCCCCC)
SelectTitleBar({
options: [
{ value: 'All photos' },
{ value: 'Local (device)' },
{ value: 'Local (memory card)' },
],
selected: 1,
onSelected: (index) => promptAction.showToast({ message: 'page index ' + index }),
subtitle: 'example@example.com',
})
Divider().height(2).color(0xCCCCCC)
SelectTitleBar({
options: [
{ value: 'All photos' },
{ value: 'Local (device)' },
{ value: 'Local (memory card)' },
],
selected: 1,
onSelected: (index) => promptAction.showToast({ message: 'page index ' + index }),
subtitle: 'example@example.com',
menuItems: [{
isEnabled: true, value: $r('sys.media.ohos_save_button_filled'),
action: () => promptAction.showToast({ message: 'show toast index 1' }),
}],
})
Divider().height(2).color(0xCCCCCC)
SelectTitleBar({
options: [
{ value: 'All photos' },
{ value: 'Local (device)' },
{ value: 'Local (memory card)' },
],
selected: 0,
onSelected: (index) => promptAction.showToast({ message: 'page index ' + index }),
subtitle: 'example@example.com',
menuItems: this.menuItems,
badgeValue: 99,
hidesBackButton: true,
})
Divider().height(2).color(0xCCCCCC)
}.width('100%')
}.height('100%')
}
}
你可能感兴趣的鸿蒙文章
- 所属分类: 后端技术
- 本文标签:
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦