-
Notifications
You must be signed in to change notification settings - Fork 2.8k
TUIKit Android修改界面样式 会话列表
whalehe edited this page Jun 18, 2019
·
3 revisions
如上图,会话列表Layout由标题区TitleBarLayout与列表区ConversationListLayout组成,每一部分都提供了UI样式以及事件注册的接口可供修改。
标题区除了本身作为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();
}
}
});
列表区的自定义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。