Skip to content

TUIKit Android修改界面样式 会话列表

whalehe edited this page Jun 18, 2019 · 3 revisions

1、会话列表

如上图,会话列表Layout由标题区TitleBarLayout列表区ConversationListLayout组成,每一部分都提供了UI样式以及事件注册的接口可供修改。

1.1 标题区TitleBarLayout

标题区除了本身作为view所具有的属性功能之外,包含了三块区域:左、中、右,如下图,


可以参考api文档进行修改。比如在ConversationLayout中,


隐藏了左边的LeftGroup,设置了中间的标题,隐藏了右边的文本,设置了右边的图片按钮,代码如下:

// 获取TitleBarLayout
TitleBarLayout titleBarLayout = mConversationLayout.findViewById(R.id.conversation_title);
// 设置标题
titleBarLayout.setTitle(getResources().getString(R.string.conversation_title), TitleBarLayout.POSITION.MIDDLE);
// 隐藏左侧group
titleBarLayout.getLeftGroup().setVisibility(View.GONE);
// 设置右侧的菜单图标
titleBarLayout.setRightIcon(R.drawable.conversation_more);

另外,可以对点击事件进行定制:

// 菜单类
mMenu = new Menu(getActivity(), titleBarLayout, Menu.MENU_TYPE_CONVERSATION);
// 响应菜单按钮的点击事件
titleBarLayout.setOnRightClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if (mMenu.isShowing()) {
            mMenu.hide();
        } else {
            mMenu.show();
        }
    }
});

1.2 列表区ConversationListLayout

列表区的自定义layout继承自RecyclerView,在登录后,tuikit会根据用户名从sdk读取该用户的会话列表。
会话列表提供了一些常用功能定制,比如头像是否圆角、背景、字体大小、点击与长按事件等,如下图:
// TODO 会话列表可定制的区域
这里我们做一部分定制以供参考:

public static void customizeConversation(final ConversationLayout layout) {
    // 从CoversationLayout获取会话列表
    ConversationListLayout listLayout = layout.getConversationList();
    listLayout.setItemTopTextSize(16); // 设置item中top文字大小
    listLayout.setItemBottomTextSize(12);// 设置item中bottom文字大小
    listLayout.setItemDateTextSize(10);// 设置item中timeline文字大小
    listLayout.enableItemRoundIcon(true);// 设置item头像是否显示圆角,默认是方形
    listLayout.disableItemUnreadDot(false);// 设置item是否不显示未读红点,默认显示
    // 长按弹出菜单
    listLayout.setOnItemLongClickListener(new ConversationListLayout.OnItemLongClickListener() {
        @Override
        public void OnItemLongClick(View view, int position, ConversationInfo conversationInfo) {
            startPopShow(view, position, conversationInfo);
        }
    });
}

更多详细api可以参考:ConversationLayoutHelper.java