• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# ComposeListItem
2<!--Kit: ArkUI-->
3<!--Subsystem: ArkUI-->
4<!--Owner: @fengluochenai-->
5<!--Designer: @YanSanzo-->
6<!--Tester: @tinygreyy-->
7<!--Adviser: @HelloCrease-->
8
9
10该组件用于展示一系列宽度相同的列表项,适用于展示连续、多行的同类数据组合(如图片与文本)。
11
12
13> **说明:**
14>
15> 该组件从API version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
16>
17
18
19## 导入模块
20
21```
22import { ComposeListItem } from "@kit.ArkUI";
23```
24
25
26## 子组件
27
2829
30## 属性
31不支持[通用属性](ts-component-general-attributes.md)。
32
33
34## ComposeListItem
35
36ComposeListItem({contentItem?: ContentItem, operateItem?: OperateItem})
37
38列表组件,可自定义列表左侧、中间元素以及右侧显示内容。
39
40**装饰器类型:**\@Component
41
42**系统能力:** SystemCapability.ArkUI.ArkUI.Full
43
44**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常, 异常信息中提示接口未定义,在其他设备中可正常调用。
45
46
47| 名称 | 类型 | 必填 | 装饰器类型 | 说明 |
48| -------- | -------- | -------- | -------- | -------- |
49| contentItem | [ContentItem](#contentitem) | 否 | \@Prop | 定义左侧以及中间元素。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
50| operateItem | [OperateItem](#operateitem) | 否 | \@Prop | 定义右侧元素。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
51
52## ContentItem
53
54列表左侧显示的图标、图标大小以及中间元素文字内容。
55
56**系统能力:** SystemCapability.ArkUI.ArkUI.Full
57
58**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常, 异常信息中提示接口未定义,在其他设备中可正常调用。
59
60
61| 名称 | 类型 | 必填 | 说明                                                                                                                                        |
62| -------- | -------- | -------- |-------------------------------------------------------------------------------------------------------------------------------------------|
63| iconStyle | [IconType](#icontype) | 否 | 左侧元素的图标样式。<br/>默认不设置或设置为undefined,icon图标资源不显示。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                        |
64| icon | [ResourceStr](ts-types.md#resourcestr) | 否 | 左侧元素的图标资源。<br/>默认不设置或设置为undefined,icon图标资源不显示。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                        |
65| symbolStyle<sup>18+</sup> | [SymbolGlyphModifier](ts-universal-attributes-attribute-symbolglyphmodifier.md#symbolglyphmodifier) | 否 | 左侧元素的Symbol图标资源,优先级大于icon,同时设置了icon和Symbol图标,只显示Symbol图标。<br/>默认不设置或设置为undefined,Symbol图标不显示。<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 |
66| primaryText | [ResourceStr](ts-types.md#resourcestr) | 否 | 中间元素的标题内容。<br/>默认不设置或设置为undefined,标题内容不显示。<br/>**文字处理规则:** 文本超长后无限换行显示。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                   |
67| secondaryText | [ResourceStr](ts-types.md#resourcestr) | 否 | 中间元素的副标题内容。<br/>默认不设置或设置为undefined,副标题内容不显示。<br/>**文字处理规则:** 文本超长后无限换行显示。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                  |
68| description | [ResourceStr](ts-types.md#resourcestr) | 否 | 中间元素的描述内容。<br/>默认不设置或设置为undefined,描述内容不显示。<br/>**文字处理规则:** 文本超长后无限换行显示。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                   |
69
70## IconType
71
72列表左侧图标类型。
73
74**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
75
76**系统能力:** SystemCapability.ArkUI.ArkUI.Full
77
78**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常, 异常信息中提示接口未定义,在其他设备中可正常调用。
79
80| 名称 | 值 | 说明 |
81| -------- | -------- | -------- |
82| BADGE | 1 | 左侧图标为badge类型,图标大小为8\*8vp。 |
83| NORMAL_ICON | 2 | 左侧图标为小图标类型,图标大小为16\*16vp。 |
84| SYSTEM_ICON | 3 | 左侧图标为系统图标类型,图标大小为24\*24vp。 |
85| HEAD_SCULPTURE | 4 | 左侧图标为头像类型,图标大小为40\*40vp。 |
86| APP_ICON | 5 | 左侧图标为应用图标类型,图标大小为64\*64vp。 |
87| PREVIEW | 6 | 左侧图标为预览图类型,图标大小为96\*96vp。 |
88| LONGITUDINAL | 7 | 左侧图标为横向特殊比例(宽比高大),保持最长边为96vp。 |
89| VERTICAL | 8 | 左侧图标为竖向特殊比例(高比宽大),保持最长边为96vp。 |
90
91## OperateItem
92
93列表右侧显示的元素类型。
94
95**系统能力:** SystemCapability.ArkUI.ArkUI.Full
96
97**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常, 异常信息中提示接口未定义,在其他设备中可正常调用。
98
99| 名称 | 类型 | 必填 | 说明                                                                                                                 |
100| -------- | -------- | -------- |--------------------------------------------------------------------------------------------------------------------|
101| arrow | [OperateIcon](#operateicon) | 否 | 右侧元素为箭头,大小为12\*24vp。<br/>默认不设置或设置为undefined,右侧箭头不显示。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。           |
102| icon | [OperateIcon](#operateicon) | 否 | 右侧元素的第一个图标,大小为24\*24vp。<br/>默认不设置或设置为undefined,右侧图标不显示。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。        |
103| subIcon | [OperateIcon](#operateicon) | 否 | 右侧元素的第二个图标,大小为24\*24vp。<br/>默认不设置或设置为undefined,右侧第二个图标不显示。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。     |
104| button | [OperateButton](#operatebutton) | 否 | 右侧元素为按钮。<br/>默认不设置或设置为undefined,右侧按钮不显示。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                       |
105| switch | [OperateCheck](#operatecheck) | 否 | 右侧元素为开关。<br/>默认不设置或设置为undefined,右侧开关不显示。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                       |
106| checkbox | [OperateCheck](#operatecheck) | 否 | 右侧元素为多选框,大小为24\*24vp。<br/>默认不设置或设置为undefined,右侧多选框不显示。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。         |
107| radio | [OperateCheck](#operatecheck) | 否 | 右侧元素为单选框,大小为24\*24vp。<br/>默认不设置或设置为undefined,右侧单选框不显示。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。          |
108| image | [ResourceStr](ts-types.md#resourcestr) | 否 | 右侧元素为图片,大小为48\*48vp。<br/>默认不设置或设置为undefined,右侧图片不显示。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。           |
109| symbolStyle<sup>18+</sup> | [SymbolGlyphModifier](ts-universal-attributes-attribute-symbolglyphmodifier.md#symbolglyphmodifier) | 否 | 右侧元素为Symbol图标资源,大小为48\*48vp。<br/>默认不设置或设置为undefined,右侧Symbol图标不显示。<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 |
110| text | [ResourceStr](ts-types.md#resourcestr) | 否 | 右侧元素为文字。 <br/>默认不设置或设置为undefined,右侧文字不显示。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                      |
111
112## OperateIcon
113
114列表右侧图标元素的类型。
115
116**系统能力:** SystemCapability.ArkUI.ArkUI.Full
117
118**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常, 异常信息中提示接口未定义,在其他设备中可正常调用。
119
120| 名称 | 类型 | 必填 | 说明                                                                                                                                                                                                                                                       |
121| -------- | -------- | -------- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
122| value | [ResourceStr](ts-types.md#resourcestr) | 是 | 右侧图标/箭头资源。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                                                           |
123| symbolStyle<sup>18+</sup> | [SymbolGlyphModifier](ts-universal-attributes-attribute-symbolglyphmodifier.md#symbolglyphmodifier) | 否 | 右侧Symbol图标/箭头资源,优先级大于value。<br/>默认不设置或设置为undefined,Symbol图标不显示。<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。                                                                                                                                      |
124| action | ()=&gt;void | 否 | 右侧图标/箭头点击事件。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                                                        |
125| accessibilityText<sup>18+</sup>        | [ResourceStr](ts-types.md#resourcestr)                    | 否 | 右侧图标/箭头的无障碍文本属性。当组件不包含文本属性时,屏幕朗读选中此组件时不播报,使用者无法清楚地知道当前选中了什么组件。为了解决此场景,开发人员可为不包含文字信息的组件设置无障碍文本,当屏幕朗读选中此组件时播报无障碍文本的内容,帮助屏幕朗读的使用者清楚地知道自己选中了什么组件。<br/>默认值:""<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。                                             |
126| accessibilityDescription<sup>18+</sup> | [ResourceStr](ts-types.md#resourcestr)                    | 否 | 右侧图标/箭头的无障碍描述。此描述用于向用户详细解释当前组件,开发人员应为组件的这一属性提供较为详尽的文本说明,以协助用户理解即将执行的操作及其可能产生的后果。特别是当这些后果无法仅从组件的属性和无障碍文本中直接获知时。如果组件同时具备文本属性和无障碍说明属性,当组件被选中时,系统将首先播报组件的文本属性,随后播报无障碍说明属性的内容。<br/>默认值为“单指双击即可执行”。<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。        |
127| accessibilityLevel<sup>18+</sup>       | string                                                    | 否 | 右侧图标/箭头的无障碍重要性。用于控制当前项是否可被无障碍辅助服务所识别。<br/>支持的值为:<br/>"auto":当前组件会转换"no"。<br/>"yes":当前组件可被无障碍辅助服务所识别。<br/>"no":当前组件不可被无障碍辅助服务所识别。<br/>"no-hide-descendants":当前组件及其所有子组件不可被无障碍辅助服务所识别。<br/>默认值:"auto" <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 |
128
129## OperateButton
130
131列表右侧按钮元素的类型。
132
133**系统能力:** SystemCapability.ArkUI.ArkUI.Full
134
135**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常, 异常信息中提示接口未定义,在其他设备中可正常调用。
136
137| 名称 | 类型 | 必填 | 说明                                                                                                                                                                                                                                                    |
138| -------- | -------- | -------- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
139| text | [ResourceStr](ts-types.md#resourcestr) | 否 | 右侧按钮文字。<br/>默认值:""<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                                                |
140| accessibilityText<sup>18+</sup>        | [ResourceStr](ts-types.md#resourcestr)                    | 否 | 右侧按钮的无障碍文本属性。当组件不包含文本属性时,屏幕朗读选中此组件时不播报,使用者无法清楚地知道当前选中了什么组件。为了解决此场景,开发人员可为不包含文字信息的组件设置无障碍文本,当屏幕朗读选中此组件时播报无障碍文本的内容,帮助屏幕朗读的使用者清楚地知道自己选中了什么组件。<br/>默认值:""<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。                                             |
141| accessibilityDescription<sup>18+</sup> | [ResourceStr](ts-types.md#resourcestr)                    | 否 | 右侧按钮的无障碍描述。此描述用于向用户详细解释当前组件,开发人员应为组件的这一属性提供较为详尽的文本说明,以协助用户理解即将执行的操作及其可能产生的后果。特别是当这些后果无法仅从组件的属性和无障碍文本中直接获知时。如果组件同时具备文本属性和无障碍说明属性,当组件被选中时,系统将首先播报组件的文本属性,随后播报无障碍说明属性的内容。<br/>默认值:"单指双击即可执行"。<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。        |
142| accessibilityLevel<sup>18+</sup>       | string                                                    | 否 | 右侧按钮的无障碍重要性。用于控制当前项是否可被无障碍辅助服务所识别。<br/>支持的值为:<br/>"auto":当前组件会转换"no"。<br/>"yes":当前组件可被无障碍辅助服务所识别。<br/>"no":当前组件不可被无障碍辅助服务所识别。<br/>"no-hide-descendants":当前组件及其所有子组件不可被无障碍辅助服务所识别。<br/>默认值:"auto" <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 |
143
144## OperateCheck
145
146列表右侧元素为Switch、CheckBox、Radio的类型。
147
148**系统能力:** SystemCapability.ArkUI.ArkUI.Full
149
150**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常, 异常信息中提示接口未定义,在其他设备中可正常调用。
151
152| 名称 | 类型 | 必填 | 说明                                                                                                                                                                                                                                                                                   |
153| -------- | -------- | -------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
154| isCheck | boolean | 否 | 右侧Switch/CheckBox/Radio选中状态。<br> isCheck默认值为false。<br> isCheck为true时,表示为选中。<br> isCheck为false时,表示为未选中。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                           |
155| onChange | (value:&nbsp;boolean)=&gt;void | 否 | 右侧Switch/CheckBox/Radio选中状态改变时触发回调。<br> value为true时,表示从未选中变为选中。<br> value为false时,表示从选中变为未选中。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                    |
156| accessibilityText<sup>18+</sup>        | [ResourceStr](ts-types.md#resourcestr)                    | 否 | 右侧Switch/CheckBox/Radio的无障碍文本属性。当组件不包含文本属性时,屏幕朗读选中此组件时不播报,使用者无法清楚地知道当前选中了什么组件。为了解决此场景,开发人员可为不包含文字信息的组件设置无障碍文本,当屏幕朗读选中此组件时播报无障碍文本的内容,帮助屏幕朗读的使用者清楚地知道自己选中了什么组件。<br/>默认值:""<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。                                                                    |
157| accessibilityDescription<sup>18+</sup> | [ResourceStr](ts-types.md#resourcestr)                    | 否 | 右侧Switch/CheckBox/Radio的无障碍描述。此描述用于向用户详细解释当前组件,开发人员应为组件的这一属性提供较为详尽的文本说明,以协助用户理解即将执行的操作及其可能产生的后果。特别是当这些后果无法仅从组件的属性和无障碍文本中直接获知时。如果组件同时具备文本属性和无障碍说明属性,当组件被选中时,系统将首先播报组件的文本属性,随后播报无障碍说明属性的内容。<br/>默认跟随基础组件Switch/CheckBox/Radio播报规则。<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 |
158| accessibilityLevel<sup>18+</sup>       | string                                                    | 否 | 右侧Switch/CheckBox/Radio的无障碍重要性。用于控制当前项是否可被无障碍辅助服务所识别。<br/>支持的值为:<br/>"auto":当前组件会转换"no"。<br/>"yes":当前组件可被无障碍辅助服务所识别。<br/>"no":当前组件不可被无障碍辅助服务所识别。<br/>"no-hide-descendants":当前组件及其所有子组件不可被无障碍辅助服务所识别。<br/>默认值:"auto" <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。            |
159
160## 事件
161不支持[通用事件](ts-component-general-events.md)。
162
163## 示例
164
165### 示例1(设置简单列表项)
166该示例实现了带有主标题、副标题、描述、右侧按钮及文本的简单列表项。
167```ts
168// 该示例主要演示该组件的基础功能使用,包含左侧右侧元素的情况
169import { IconType, ComposeListItem } from '@kit.ArkUI';
170
171@Entry
172@Component
173struct ComposeListItemExample {
174  build() {
175    Column() {
176      List() {
177        ListItem() {
178          ComposeListItem({
179            contentItem: ({
180              iconStyle: IconType.NORMAL_ICON,
181              icon: $r('sys.media.ohos_app_icon'),
182              primaryText: '双行列表',
183              secondaryText: '辅助文字',
184              description: '描述内容文字'
185            }),
186            operateItem: ({
187              icon: {
188                value: $r('sys.media.ohos_app_icon'),
189                action: () => {
190                  this.getUIContext().getPromptAction().showToast({
191                    message: 'icon'
192                  });
193                } },
194              text: '右侧文本'
195            })
196          })
197        }
198      }
199    }
200  }
201}
202```
203![示例1-ComposeListItem示例 左右元素+文本](figures/zh-cn_image_composelistitem_demo_01.jpg)
204
205### 示例2(设置右侧不同元素自定义播报)
206从API version 18开始,该示例通过设置属性accessibilityText、accessibilityDescription、accessibilityLevel,实现右侧图标、按钮、单选框自定义屏幕朗读播报文本。
207```ts
208import { IconType, ComposeListItem } from '@kit.ArkUI';
209@Entry
210@Component
211struct ComposeListItemExample {
212  build() {
213    Column() {
214      List() {
215        ListItem() {
216          ComposeListItem({
217            contentItem: ({
218              iconStyle: IconType.NORMAL_ICON,
219              icon: $r('sys.media.ohos_app_icon'),
220              primaryText: '双行列表',
221              secondaryText: '辅助文字',
222              description: '描述内容文字'
223            }),
224            operateItem: ({
225              radio: {
226                accessibilityText: '单选框', // 该单选框屏幕朗读播报文本为‘单选框’
227                accessibilityDescription: '未选中', // 该单选框屏幕朗读播报描述为'未选中'
228                accessibilityLevel: 'yes'  // 该项可被无障碍屏幕朗读聚焦
229              }
230            })
231          })
232        }
233
234        ListItem() {
235          ComposeListItem({
236            contentItem: ({
237              iconStyle: IconType.NORMAL_ICON,
238              icon: $r('sys.media.ohos_app_icon'),
239              primaryText: '双行列表',
240              secondaryText: '辅助文字',
241              description: '描述内容文字'
242            }),
243            operateItem: ({
244              button: {
245                text: '确定',
246                accessibilityText: '这是一个按钮',
247                accessibilityDescription: '单指双击即可执行',
248                accessibilityLevel: 'no'  // 该按钮不可被屏幕朗读服务识别
249              }
250            })
251          })
252        }
253
254        ListItem() {
255          ComposeListItem({
256            contentItem: ({
257              iconStyle: IconType.NORMAL_ICON,
258              icon: $r('sys.media.ohos_app_icon'),
259              primaryText: '双行列表',
260              secondaryText: '辅助文字',
261              description: '描述内容文字'
262            }),
263            operateItem: ({
264              icon: {
265                value: $r('sys.media.ohos_app_icon'),
266                action: () => {
267                this.getUIContext().getPromptAction().showToast({
268                    message: 'icon'
269                  });
270                },
271                accessibilityText: '这是一个icon', // 该icon屏幕朗读播报文本为‘这是一个icon’
272                accessibilityDescription: '单指双击即可弹出', // 该icon屏幕朗读播报描述为'单指双击即可弹出'
273                accessibilityLevel: 'yes'  // 该项可被无障碍屏幕朗读聚焦
274              }
275            })
276          })
277        }
278      }
279    }
280  }
281}
282```
283![示例2-ComposeListItem示例2 设置右侧元素自定义播报](figures/zh-cn_image_composelistitem_demo_02.png)
284
285### 示例3(设置Symbol类型图标)
286
287从API version 18开始,该示例通过设置ContentItem、OperateItem、OperateIcon的属性symbolStyle,展示了自定义Symbol类型图标。
288
289```ts
290import { IconType, ComposeListItem, SymbolGlyphModifier } from '@kit.ArkUI';
291@Entry
292@Component
293struct ComposeListItemExample {
294  build() {
295    Column() {
296      List() {
297        ListItem() {
298          ComposeListItem({
299            contentItem: ({
300              iconStyle: IconType.NORMAL_ICON,
301              icon: $r('sys.symbol.house'),
302              primaryText: '双行列表',
303              secondaryText: '辅助文字',
304              description: '描述内容文字'
305            }),
306            operateItem: ({
307              image: $r('sys.symbol.car'),
308            })
309          })
310        }
311
312        ListItem() {
313          ComposeListItem({
314            contentItem: ({
315              iconStyle: IconType.NORMAL_ICON,
316              icon: $r('sys.symbol.house'),
317              symbolStyle: new SymbolGlyphModifier($r('sys.symbol.bell')).fontColor([Color.Red]),
318              primaryText: '双行列表',
319              secondaryText: '辅助文字',
320              description: '描述内容文字'
321            }),
322            operateItem: ({
323              image: $r('sys.symbol.car'),
324              symbolStyle: new SymbolGlyphModifier($r('sys.symbol.heart')).fontColor([Color.Pink]),
325            })
326          })
327        }
328
329        ListItem() {
330          ComposeListItem({
331            contentItem: ({
332              iconStyle: IconType.NORMAL_ICON,
333              icon: $r('sys.symbol.house'),
334              symbolStyle: new SymbolGlyphModifier($r('sys.symbol.bell')).fontColor([Color.Blue]),
335              primaryText: '双行列表',
336              secondaryText: '辅助文字',
337              description: '描述内容文字'
338            }),
339            operateItem: ({
340              icon: {
341                value: $r('sys.symbol.car'),
342                symbolStyle: new SymbolGlyphModifier($r('sys.symbol.heart')).fontColor([Color.Orange]),
343                action: () => {
344                  this.getUIContext().getPromptAction().showToast({
345                    message: 'icon'
346                  });
347                }
348              }
349            })
350          })
351        }
352      }
353    }
354  }
355}
356```
357
358![示例3-ComposeListItem示例3 设置Symbol类型图标](figures/zh-cn_image_composelistitem_demo_03.png)