自定义长按消息菜单
IMKit SDK 支持在会话页通过长按消息触发弹窗菜单,根据当前消息类型、会话类型提供不同选项。您可以自定义菜单选项的显示名称、顺序、以及自行增删菜单选项。

自定义长按消息弹窗的菜单选项
-
监听会话页面的长按消息事件(
onMessageLongClick)。JavaIMCenter.setConversationClickListener(
new ConversationClickListener() {
@Override
public boolean onUserPortraitClick(
Context context,
Conversation.ConversationType conversationType,
UserInfo user,
String targetId) {
return false;
}
@Override
public boolean onUserPortraitLongClick(
Context context,
Conversation.ConversationType conversationType,
UserInfo user,
String targetId) {
return false;
}
@Override
public boolean onMessageClick(
Context context, View view, Message message) {
return false;
}
@Override
public boolean onMessageLongClick(
Context context, View view, Message message) {
return false;
}
@Override
public boolean onMessageLinkClick(
Context context, String link, Message message) {
return false;
}
@Override
public boolean onReadReceiptStateClick(
Context context, Message message) {
return false;
}
}); -
您可通过
MessageItemLongClickActionManager对会话页消息长按菜单选项(MessageItemLongClickAction)进行功能定制。增删菜单选项或调整菜单选项的显示名称、顺序。-
MessageItemLongClickActionManager在初始化方法initCommonMessageItemLongClickActions中添加了部分操作选项。您可以使用addMessageItemLongClickAction添加选项。可参考 IMKit 源码中的 MessageItemLongClickActionManager.java。 -
如需删除已有选项时,需先获取到要删除选项的对象,通过调用
removeMessageItemLongClickAction方法以去除默认已经添加的「删除消息」选项为例:JavaList<MessageItemLongClickAction> clickActions = MessageItemLongClickActionManager
.getInstance().getMessageItemLongClickActions();
Iterator<MessageItemLongClickAction> iterator = clickActions.iterator();
String delActionTitle = getString(R.string.rc_dialog_item_message_delete);
while (iterator.hasNext()) {
MessageItemLongClickAction clickAction = iterator.next();
boolean isDelAction = delActionTitle.equals(clickAction.getTitle(this));
if (isDelAction) {
iterator.remove();
break;
}
}
MessageItemLongClickAction类属性如下表所示。属性 类型 描述 title String 显示名称。 listener MessageItemLongClickListener 长按消息监听器。 priority int 优先级越高,排在越前面(由上到下的顺序)。默认全是 0,按添加顺序排列。filter Filter 控制是否会被显示出来的过滤器。 -