全部文档

( 最近更新时间:2020-04-28 19:00:00 )

# 会话列表布局文件

开发者可通过修改布局文件修改背景或字体颜色等。

布局 位置 说明
rc_fr_conversationlist.xml kit 下的 res/layout 会话列表布局文件
rc_item_conversation.xml kit 下的 res/layout 会话列表各个 item 对应的布局文件

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

# 头像位置自定义

IMkit 中可以自定义会话列表的头像位置的显示方式,显示方式有:靠左显示靠右显示不显示

自定义步骤:

  1. 新建 CustomConversationProvider 继承消息模版(想要修改的 ConversationProvider 类). 然后重写 ConversationProviderTag 注解,修改 portraitPosition 的值以完成显示方式。

IMkit 内置模板

提供者名称 类名 注解 ConversationType 值
单聊会话提供者 PrivateConversationProvider.java private
群聊会话提供者 GroupConversationProvider.java group
客服会话提供者 CustomerServiceConversationProvider.java customer_service
系统会话提供者 SystemConversationProvider.java system
应用公众服务会话提供者 AppServiceConversationProvider.java app_public_service
公众服务平台会话提供者 PublicServiceConversationProvider.java public_service

ConversationProviderTag 注解类

属性 说明
conversationType 不能重复;不可修改,它是会话提供者的唯一标识
portraitPosition 用来控制头像的显示方式,它的值可以修改,它的值有:1:靠左显示, 2:靠右显示, 3:不显示

代码示例

@ConversationProviderTag(conversationType = "private", portraitPosition = 2)
public class MyPrivateConversationProvider extends PrivateConversationProvider {
  ...
}
已复制
1
2
3
4
  1. 重新注册该会话模板,注册方法应在 init 后调用
RongIM.getInstance().registerConversationTemplate(new MyPrivateConversationProvider())
已复制
1

# 会话列表添加头部

可在会话列表头部添加自定义布局.

  1. 创建 CustomConversationListFragment 继承 ConversationListFragment.

  2. 复写父类 onAddHeaderView 方法, 并添加返回自定义的布局.

class CustomConversationListFragment extends ConversationListFragment {


  /**
   * 会话列表添加头部
   * @return 头部view
   */
  @Override
  protected List<View> onAddHeaderView() {
    List<View> headerViews = new ArrayList<>();
    //添加自定义布局
    headerViews.add(view1);
    headerViews.add(view2);
    return headerViews;
  }
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  1. 使用 CustomConversationListFragment 代替 ConversationListFragment 进行配置使用即可.

# 自定义 Adapter

开发者可自定义会话列表适配器.

  1. 创建 CustomConversationListAdapter 继承 ConversationListAdapter. 并复写 newViewbindView 方法.
public class CustomConversationListAdapter extends ConversationListAdapter {
    public CustomConversationListAdapter(Context context) {
        super(context);
    }

    @Override
    protected View newView(Context context, int position, ViewGroup group) {
        // 此处用于会话列表界面的初始化. 可在此处自定义界面或修改界面.
        return super.newView(context, position, group);
    }

    @Override
    protected void bindView(View v, int position, UIConversation data) {
        super.bindView(v, position, data);
        // 此处是对控件进行操作. 可在方法中操作控件.
    }
}

已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  1. 创建 CustomConversationListFragment 继承 ConversationListFragment. 并复写 onResolveAdapter 方法, 返回设置自定义的 Adapter.
class CustomConversationListFragment extends ConversationListFragment {

  /**
   * 提供 ListView 的 Adapter 适配器。
   * @return 适配器
   */
  @Override
  public ConversationListAdapter onResolveAdapter(Context context) {
    return new CustomConversationListAdapter(context);
  }
}

已复制
1
2
3
4
5
6
7
8
9
10
11
12
  1. 使用 CustomConversationListFragment 代替 ConversationListFragment 进行配置使用即可.

文档是否解决您的问题 ?

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