更新时间: 2021-03-08
# 会话消息列表
# 消息列表布局
可通过修改上述布局文件来更改 字体大小、颜色及背景色等.
布局 | 位置 | 说明 |
---|---|---|
rc_fr_conversation.xml | kit 下的 res/layout | 会话页面布局 |
rc_item_message.xml | kit 下的 res/layout | 消息列表 Item 布局 |
使用 MAVEN 集成方式, 则可把要修改的布局文件拷贝到主工程下, 然后进行修改. 工程优先加载主工程中的资源.
# 消息展示自定义
融云 IMKit SDK 中每一种消息类型(在 UI 展示的)都对应一个 Provider 用于界面展示. 可通过给自定义消息创建对应的 Provider 使自定义消息展示在消息列表中.
自定义步骤
- 创建类
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
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 |
- 重新注册该消息模板,注册方法应在 init 后注册消息模版
RongIM.getInstance().registerMessageTemplate(new MyMessageItemProvider());
已复制
1
# 自定义 Adapter
- 创建
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
2
3
4
5
6
7
8
9
10
11
12
13
- 创建
CustomConversationFragment
继承于 ConversationFragment, 并复写父类中的onResolveAdapter()
, 返回CustomMessageListAdapter
对象.
class CustomMessageListAdapter extends ConversationFragment { @Override public MessageListAdapter onResolveAdapter() { return new CustomMessageListAdapter(); } }
已复制
1
2
3
4
5
6
2
3
4
5
6
- 使用
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.xml
里 app:RCStyle="SCE"
,更改默认输入显示形式.
# 未读消息数和新消息提醒
在会话界面显示新消息提醒和未读消息数目可以在连接成功后通过下面方法设置, 默认不显示.
RongIM.getInstance().enableNewComingMessageIcon(true);//显示新消息提醒 RongIM.getInstance().enableUnreadMessageIcon(true);//显示未读消息数目
已复制
1
2
2

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