全部文档

更新时间: 2021-03-08

# 会话消息列表

# 消息列表布局

可通过修改上述布局文件来更改 字体大小、颜色及背景色等.

布局 位置 说明
rc_fr_conversation.xml kit 下的 res/layout 会话页面布局
rc_item_message.xml kit 下的 res/layout 消息列表 Item 布局

使用 MAVEN 集成方式, 则可把要修改的布局文件拷贝到主工程下, 然后进行修改. 工程优先加载主工程中的资源.

# 消息展示自定义

融云 IMKit SDK 中每一种消息类型(在 UI 展示的)都对应一个 Provider 用于界面展示. 可通过给自定义消息创建对应的 Provider 使自定义消息展示在消息列表中.

自定义步骤

  1. 创建类 MyMessageItemProvider 继承 MessageProvider , 并给类添加注解.
@ProviderTag (messageContent = MyMessage.class)
public class MyMessageItemProvider extends MessageProvider{
    class ViewHolder {
        ...
    }

    @Override
    public View newView(Context context, ViewGroup group) {
        View view = LayoutInflater.from(context).inflate(R.layout.item_custom_message, null);
        view.setTag(holder);
        return view;
    }

    @Override
    public void bindView(View v, int position, CustomizeMessage content, Message message) {
        
    }

    @Override
    public Spannable getContentSummary(CustomizeMessage data) {
        return new SpannableString("这是一条自定义消息CustomizeMessage");
    }

    @Override
    public void onItemClick(View view, int position, CustomizeMessage content, Message message) {

    }

    @Override
    public void onItemLongClick(View view, int position, CustomizeMessage content, Message message) {

    }
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

注解 ProviderTag 说明

注解属性

属性 描述
messageContent 对应的消息类型 ( 如:TextMessage.class )
showPortrait 设置是否显示头像,默认为 true
centerInHorizontal 消息内容是否横向居中,默认 false
hide 是否隐藏消息, 默认 false
showProgress 是否显示发送进度,默认 true
showSummaryWithName 是否在会话的内容体里显示发送者名字,默认 true
  1. 重新注册该消息模板,注册方法应在 init 后注册消息模版
RongIM.getInstance().registerMessageTemplate(new MyMessageItemProvider());
已复制
1
# 自定义 Adapter
  1. 创建 CustomMessageListAdapter 继承 MessageListAdapter. 根据自己的需求复写 newView() 或者 bindView() 方法.
    class CustomMessageListAdapter extends MessageListAdapter {
        @Override
        protected View newView(final Context context, final int position, ViewGroup group)  {
            // 此方法中初始化控件
            return view;
        }

        @Override
        protected void bindView(View v, final int position, final UIMessage data) {
            // 此方法中操作控件
        }
    }

已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
  1. 创建 CustomConversationFragment 继承于 ConversationFragment, 并复写父类中的 onResolveAdapter(), 返回 CustomMessageListAdapter 对象.
    class CustomMessageListAdapter extends ConversationFragment {
        @Override
        public MessageListAdapter onResolveAdapter() {
            return new CustomMessageListAdapter();
        }
    }
已复制
1
2
3
4
5
6
  1. 使用 CustomConversationListFragment 代替 ConversationListFragment 进行配置使用即可.

# 输入区自定义

# 输入区布局

部分布局文件如下,您可以通过修改对应的布局文件来调整界面布局, 字体大小、颜色及背景色等等。

布局 位置 说明
rc_ext_extension_bar.xml kit 下的 res/layout 输入框布局文件。它是整个输入框的容器,内部有对各部分组件功能描述
rc_ext_input_edit_text.xml kit 下的 res/layout EditText 布局文件. 如果想要替换背景,直接修改即可
rc_ext_voice_input.xml kit 下的 res/layout 语音输入布局文件

使用 MAVEN 集成方式, 则可把要修改的布局文件拷贝到主工程下, 然后进行修改. 工程优先加载主工程中的资源.

# 输入框模式自定义

会界面可以设置输入框的模式。针对聊天会话的 语音/文本切换功能内容输入功能扩展功能,融云目前提供了 5 种排列组合模式:

style 组合模式
SCE 语音/文本切换功能+内容输入功能+扩展功能
SC 语音/文本切换功能+内容输入功能
EC 扩展功能+内容输入功能
CE 内容输入功能+扩展功能
C 内容输入功能

可通过更改 rc_fr_conversation.xmlapp:RCStyle="SCE" ,更改默认输入显示形式.

# 未读消息数和新消息提醒

在会话界面显示新消息提醒和未读消息数目可以在连接成功后通过下面方法设置, 默认不显示.

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

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

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助