一、前言
加号区域功能外展还是很常用的,你看下主流的社交软件都外展的,方便用户使用。默认融云是不支持的,只得我们自己做
二、效果图
外展.png三、解决思路
找到相应的布局(rc_extension_input_panel.xml)添加你外展的控件。然后自定义类继承ConversationFragment,在自定义类中的onViewCreated里面find你的控件,写你的点击事件业务代码
四、参考示例代码
/**
* @desc : 处理外展的加号内容
* @author : congge on 2022-05-09 15:01
**/
private fun dealOutExtension(chatWindowBean: ChatWindowBean?){
//只用SC模式:语音/文本切换功能+内容输入功能
rongExtension.inputPanel.setInputPanelStyle(InputPanel.InputStyle.STYLE_SWITCH_CONTAINER);
rcEmojiBtn = mRongExtension.inputPanel.rootView.findViewById(R.id.input_panel_emoji_btn)
rcEmojiBtn?.visibility = View.GONE
rcAddBtn = mRongExtension.inputPanel.rootView.findViewById(R.id.input_panel_add_btn)
rcAddBtn?.visibility = View.GONE
ivChatOutPic = mRongExtension.inputPanel.rootView.findViewById(R.id.iv_chat_out_pic)
ivChatOutCall = mRongExtension.inputPanel.rootView.findViewById(R.id.iv_chat_out_call)
ivChatOutGift = mRongExtension.inputPanel.rootView.findViewById(R.id.iv_chat_out_gift)
ivChatOutEmoji = mRongExtension.inputPanel.rootView.findViewById(R.id.iv_chat_out_emoji)
ivChatOutAdd = mRongExtension.inputPanel.rootView.findViewById(R.id.iv_chat_out_add)
chatWindowBean?.let {
ivChatOutCall?.visibility = if (it.chatMediaAbduceShowState == 1){
View.VISIBLE
} else {
View.GONE
}
}
if (isKefu){
ivChatOutCall?.visibility = View.GONE
ivChatOutGift?.visibility = View.GONE
}
//点击照片
ivChatOutPic?.setOnClickListener {
if (!mRongExtension.pluginBoard.pluginModules.isNullOrEmpty()){
for (index in mRongExtension.pluginBoard.pluginModules.indices){
if (mRongExtension.pluginBoard.pluginModules[index] is MyImagePlugin){
mRongExtension.pluginBoard.pluginModules[index].onClick(
this,
rongExtension,
index
)
}
}
}
}
//点击音视频通话
ivChatOutCall?.setOnClickListener {
//点击音视频的不用加号拓展项,因为拓展项中的音视频可能没有
if (activity is ChattingActivity){
(activity as ChattingActivity).dealClickChatCall()
}
}
//点击礼物
ivChatOutGift?.setOnClickListener {
if (!mRongExtension.pluginBoard.pluginModules.isNullOrEmpty()){
for (index in mRongExtension.pluginBoard.pluginModules.indices){
if (mRongExtension.pluginBoard.pluginModules[index] is MyGiftPlugin){
mRongExtension.pluginBoard.pluginModules[index].onClick(
this,
rongExtension,
index
)
}
}
}
}
//点击表情
ivChatOutEmoji?.setOnClickListener {
rcEmojiBtn?.performClick()
}
//点击加号
ivChatOutAdd?.setOnClickListener {
rcAddBtn?.performClick()
}
}
这里只给出自定义的ConversationFragment在onViewCreated如何findView和点击事件。其他操作请看我的解决思路。还有问题可以私信我。
网友评论