输入区域
Global IM UIKit 的输入区域是在 InputPanelComponent 统一创建和控制的,支持自定义输入模式、自定义扩展区域(插件)、以及自定义贴纸。
下图输入区从左至右依次是加号扩展按钮、内容输入框、贴纸按钮、语音录制按钮 。
修改输入栏组合模式
输入框文本输入区域不允许修改,只支持对文本输入区域的左右按钮增加或者删除。
- 
您可以通过重写 InputPanelComponent#beforeCreateLeftInputActionView(@NonNull List<InputAction> leftInputActions)方法 获取到默认的左边按钮并对其修改。
- 
您可以通过重写 InputPanelComponent#beforeCreateRightInputActionView(@NonNull List<InputAction> rightInputActions)方法 获取到默认的右边按钮并对其修改。
Java
public class CustomInputPanelComponent extends InputPanelComponent{
    @NonNull
    @Override
    protected List<InputAction> beforeCreateLeftInputActionView(@NonNull List<InputAction> leftInputActions) {
        // 增加
        leftInputActions.add(new InputAction() {
            @Override
            public Drawable obtainDrawable(@NonNull Context context) {
                return ResourcesCompat.getDrawable(context.getResources(), com.rongcloud.im.uikit.R.drawable.rc_icon_voice, null);
            }
            @Override
            public void onClick(@NonNull View view) {
                Toast.makeText(getContext(), "voice Clicked", Toast.LENGTH_SHORT).show();
            }
        });
        return super.beforeCreateLeftInputActionView(leftInputActions);
    }
    @NonNull
    @Override
    protected List<InputAction> beforeCreateRightInputActionView(@NonNull List<InputAction> rightInputActions) {
        // 添加
        rightInputActions.add(new InputAction() {
            @Override
            public Drawable obtainDrawable(@NonNull Context context) {
                return ResourcesCompat.getDrawable(context.getResources(), com.rongcloud.im.uikit.R.drawable.rc_icon_camera, null);
            }
            @Override
            public void onClick(@NonNull View view) {
                Toast.makeText(getContext(), "camera Clicked", Toast.LENGTH_SHORT).show();
            }
        });
        return super.beforeCreateRightInputActionView(rightInputActions);
    }
}
输入区域扩展面板
融云将点击输入栏 + 号按钮时展示的面板称为扩展面板,扩展面板上可以实现相册、相机、文件等功能。
您可以通过操作 重写 InputPanelComponent#beforeCreateInputMoreActionView(@NonNull List<InputMoreAction> chatActions) 增加、删除、修改扩展功能。
Java
public class CustomInputPanelComponent extends InputPanelComponent{
    @NonNull
    @Override
    protected List<InputMoreAction> beforeCreateInputMoreActionView(@NonNull List<InputMoreAction> inputMoreActions) {
        // 方式1. 移除文件按钮
        Iterator<InputMoreAction> iterator = inputMoreActions.iterator();
        while (iterator.hasNext()) {
            InputMoreAction inputMoreAction = iterator.next();
            if (inputMoreAction instanceof FileInputMoreAction) {
                iterator.remove();
            }
        }
        // 方式2. 添加自定义的 InputMoreAction
        inputMoreActions.add(new InputMoreAction() {
            @Override
            public String obtainTitle(@NonNull Context context) {
                return "Position";
            }
            @Override
            public Drawable obtainDrawable(@NonNull Context context) {
                return ResourcesCompat.getDrawable(context.getResources(), com.rongcloud.im.uikit.R.drawable.rc_icon_camera, null);
            }
            @Override
            public void onClick(@NonNull View view) {
                Toast.makeText(getContext(), "Position Clicked", Toast.LENGTH_SHORT).show();
            }
        });
        return super.beforeCreateInputMoreActionView(inputMoreActions);
    }
}
默认的菜单选项可以根据 class 来区分,参考如下:
| 功能 | class | 
|---|---|
| 相册 | AlbumInputMoreAction | 
| 拍照 | CameraInputMoreAction | 
| 文件 | FileInputMoreAction | 
贴纸面板
Global IM UIKit 默认只提供贴纸按钮(如下图)和贴纸展示的面板,贴纸资源需要由应用程序提供给 Global IM UIKit。
关于如何添加自定义贴纸,详见贴纸消息。