跳转至

会话界面

会话页面布局

您可以通过修改布局文件来更改字体大小颜色及背景色等。

布局 说明
rc_fr_conversation.xml 会话页面布局
rc_item_message.xml 消息列表单个 item 对应的布局

消息展示

SDK 中每一种消息类型(要在 UI 展示的)都对应一个 UI 展示的 Provider,开发者可以修改 Provider 的注解属性来完成消息显示的自定义。

自定义步骤:

1、新建一类并继承要修改的消息提供者类,然后重写注解。

注解名称:ProviderTag。

注解属性:

属性 描述
messageContent   对应的消息类型 ( 如:TextMessage.class )。
showPortrait 设置是否显示头像,默认为 true。
centerInHorizontal 消息内容是否横向居中,默认 false。
hide 是否隐藏消息, 默认 false。
showProgress 是否显示发送进度,默认 true。
showSummaryWithName 是否在会话的内容体里显示发送者名字,默认 true。

在会话中让 TextMessage 不显示头像且消息内容横向居中显示的步骤示例 :

1.自定义 TextMessage 的展示模板

@ProviderTag ( messageContent = TextMessage.class , showPortrait = false , centerInHorizontal = true )
public class MyTextMessageItemProvider extends TextMessageItemProvider
{...}

2.重新注册该消息模板,注册方法应在 init 后调用

RongIM.getInstance().registerMessageTemplate(new MyTextMessageItemProvider());

消息提醒

未读消息数目和新消息气泡在 IMKit 中默认不显示,如需要显示新消息提醒和未读消息数目可以在连接成功后通过下面方法设置。

RongIM.getInstance().enableNewComingMessageIcon(true);//显示新消息提醒
RongIM.getInstance().enableUnreadMessageIcon(true);//显示未读消息数目

新消息大于 1 条即展示,超过 99 条显示为 "99+",未读消息大于 10 条即展示,超过 150 条显示为 "150+条新消息"。控件的样式可以在 layout/rc_fr_messagelist.xml 中进行调整。

fragment

自定义 fragment 继承自 ConversationFragment ,重写对应的方法来自定义会话页面的显示。Activity 布局文件中也需要配置成自定义的 fragment。

adapter

1.自定义会话 fragment 继承自 ConversationFragment,复写 onResolveAdapter() 方法,返回自定义的 adapter。

 /**
     * 提供 ListView 的 Adapter 适配器。
     * 使用时,需要继承 {@link ConversationFragment} 并重写此方法。
     * 注意:提供的适配器,要继承自 {@link MessageListAdapter}
     *
     * @return 适配器
     */
    public MessageListAdapter onResolveAdapter(Context context) 

2.自定义继承 MessageListAdapter 的消息列表适配器,根据需要复写其中的 newView() 或者 bindView() 方法

public class MessageListAdapterEx extends MessageListAdapter {
    public MessageListAdapterEx(Context context) {
        super(context);
    }

    @Override
    protected View newView(Context context, int position, ViewGroup group) {
        
    }

    @Override
    protected void bindView(View v, int position, UIConversation data) {
    
      }

长按菜单

调 RongMessageItemLongClickActionManager 的 addMessageItemLongClickAction 来添加长按菜单。

RongMessageItemLongClickActionManager.getInstance().addMessageItemLongClickAction(clickActionReference, 2);

调 removeMessageItemLongClickAction 移除长按菜单。

public void removeMessageItemLongClickAction(MessageItemLongClickAction action)