会话列表 | 会话操作 |
![]() | ![]() |
方法名 | 参数 | 描述 |
ConversationList | modifier: Modifier | Jetpack Compose 中用来设置组件的样式、布局、行为和外观。 |
| config: ConversationActionConfigProtocol | 会话操作菜单配置,选填。默认值为 ChatConversationActionConfig(),可设置默认操作项是否展示,也可通过 customizeActions 编辑操作项。 |
| conversationListViewModelFactory: ConversationListViewModelFactory | 创建组件内部 ConversationListViewModel 的工厂类。通常情况下,您无需手动创建,组件已提供默认实现。 |
| customActions: List<ConversationCustomAction> | 自定义会话操作项,追加在操作菜单的末尾,选填。 |
| onConversationClick: (ConversationInfo) -> Unit | 设置会话点击回调,选填。 |
onConversationClick 回调。参数名 | 类型 | 描述 |
onConversationClick | (ConversationInfo) -> Unit | 会话点击回调,当用户点击某个会话 cell 时触发。回调参数 ConversationInfo 中的 conversationID 可用于进入对应的聊天页面。 |
import io.trtc.tuikit.chat.uikit.components.conversationlist.ui.ConversationListBox(modifier = Modifier.fillMaxSize().systemBarsPadding()) {ConversationList(onConversationClick = { conversation ->// 这里建议导航到聊天页面,conversation.conversationID 为会话 ID})}
config,指定当前会话列表展示哪些默认操作项。import io.trtc.tuikit.chat.uikit.components.conversationlist.config.ChatConversationActionConfigimport io.trtc.tuikit.chat.uikit.components.conversationlist.ui.ConversationListConversationList(config = ChatConversationActionConfig(isSupportMarkUnread = true, // 展示“标为已读/标为未读”isSupportMute = true, // 展示“消息免打扰/取消免打扰”isSupportPin = true, // 展示“置顶/取消置顶”isSupportClearHistory = true, // 展示“清空聊天记录”isSupportDelete = false // 不展示“删除聊天”),onConversationClick = { conversation ->// 点击会话 cell 跳转})
操作类型 | 对应操作项 ID | 描述 |
isSupportMarkUnread | ConversationActionIDs.MARK_UNREAD | 是否展示“标为已读/标为未读”。会话有未读消息或被标记为未读时显示“标为已读”,否则显示“标为未读”。 |
isSupportMute | ConversationActionIDs.MUTE | 是否展示“消息免打扰/取消免打扰”。 |
isSupportPin | ConversationActionIDs.PIN | 是否展示“置顶/取消置顶”。 |
isSupportClearHistory | ConversationActionIDs.CLEAR_HISTORY | 是否展示“清空聊天记录”,点击后会先弹出确认框。 |
isSupportDelete | ConversationActionIDs.DELETE | 是否展示“删除聊天”,标题显示为红色,点击后会先弹出确认框。 |
customActions,ConversationList 内部会在默认操作项的末尾添加您增加的自定义选项:参数名 | 类型 | 描述 |
customActions | List<ConversationCustomAction> | 自定义会话操作,长按会话 cell 弹出操作菜单时展示。 |
ConversationCustomAction 的字段说明如下:字段 | 类型 | 描述 |
ID | String | 操作项的唯一标识,必填。 |
title | String | 操作项标题,默认为空字符串。 |
titleResID | Int | 操作项标题的字符串资源 ID,仅在 title 为空时使用。title 和 titleResID 均未设置的操作项不会展示。 |
dangerous | Boolean | 是否为危险操作,为 true 时标题显示为红色,默认为 false。 |
action | (ConversationInfo) -> Unit | 点击操作项时的回调,参数为当前长按的会话。 |
import io.trtc.tuikit.chat.uikit.components.conversationlist.model.ConversationCustomActionimport io.trtc.tuikit.chat.uikit.components.conversationlist.ui.ConversationListConversationList(customActions = listOf(ConversationCustomAction(ID = "custom.conversation.hide",title = "Hide",action = { conversation ->println("Hide conversation: ${conversation.title}")})),onConversationClick = { conversation ->// 处理点击事件})
ChatConversationActionConfig 的 customizeActions 编辑操作菜单。每次长按会话 cell 时,组件会先根据开关生成默认操作项,再执行 customizeActions 中的代码,最后在末尾追加 customActions 中的操作项。editorContext.conversation 获取当前长按的会话,通过 editorContext.androidContext 获取 Android Context,并调用以下方法编辑操作项:方法 | 描述 |
add(item) | 在末尾添加操作项。item 的 ID 为空白或与已有操作项重复时会抛出 IllegalArgumentException。 |
remove(ID) | 移除指定 ID 的操作项,不存在时返回 false。 |
replace(ID) { item -> ... } | 替换指定 ID 的操作项,不存在时返回 false。替换后的操作项必须保持 ID 不变,否则会抛出异常。 |
insertBefore(anchorID, item) / insertAfter(anchorID, item) | 在锚点操作项之前或之后插入操作项。锚点不存在时返回 false,且不会插入。item 的 ID 规则与 add 相同。 |
moveBefore(ID, anchorID) / moveAfter(ID, anchorID) | 将操作项移动到锚点操作项之前或之后,任意一个 ID 不存在时返回 false。 |
clear() | 移除全部操作项。 |
items | 当前操作项列表的只读快照。 |
import io.trtc.tuikit.atomicxcore.api.conversation.ConversationTypeimport io.trtc.tuikit.chat.uikit.components.conversationlist.config.ChatConversationActionConfigimport io.trtc.tuikit.chat.uikit.components.conversationlist.model.ConversationActionIDsimport io.trtc.tuikit.chat.uikit.components.conversationlist.model.ConversationCustomActionimport io.trtc.tuikit.chat.uikit.components.conversationlist.ui.ConversationListval actionConfig = ChatConversationActionConfig().customizeActions {// 当前长按的会话val conversation = editorContext.conversation// 移除“清空聊天记录”remove(ConversationActionIDs.CLEAR_HISTORY)// 修改“删除聊天”的标题。ID 保持不变,点击后仍会先弹出确认框replace(ConversationActionIDs.DELETE) { action ->action.copy(title = "删除会话")}// 仅对群聊会话,在“删除会话”之前插入自定义操作项if (conversation.type == ConversationType.GROUP) {insertBefore(ConversationActionIDs.DELETE,ConversationCustomAction(ID = "custom.conversation.groupProfile",title = "查看群资料",action = { target ->// 跳转到群资料页,target.conversationID 的格式为 group_groupID}))}}ConversationList(config = actionConfig,onConversationClick = { conversation ->// 点击会话 cell 跳转})
ConversationActionIDs.DELETE 或 ConversationActionIDs.CLEAR_HISTORY 的操作项(包括通过 replace 修改后的操作项),点击后都会先弹出确认框,用户确认后才执行 action。会话操作(默认选项) | 会话操作(隐藏删除选项) | 会话操作(新增隐藏会话选项) |
![]() | ![]() | ![]() |
文档反馈