EditText属性imeOption="actionSend"的使用限制

为了将软键盘的enter键改为发送,实现IM发送消息的目的,需要设置输入框的imeOption

但是只有将EditText的singleLine属性设置为true时,软键盘enter键的文字才会变成“Send”。

通过设置EditText的setOnEditorActionListener方法,来监听软键盘enter点击的事件。但是如果singleLine的属性为false,此时actionId为0(测试机型华为GEM-703L,系统Android 6.0),而不是预期的EditorInfo.IME_ACTION_SEND。

为了在多行输入的情况下,实现发送功能,只能改为ENTER键被按下来处理发送。缺点就是只能实现一种imeOption的操作,且enter键仍显示换行的图标,而不是“send”。

mEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {  
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
                    boolean isOK = false;
                //目前输入框需要支持多行输入,此时enter键的内容不会更改,且按下时actionId为0;
                // 注意不同的手机可能有兼容性问题,此时只监听enter键的按下
                //当actionId == XX_SEND
                //或者event.getKeyCode == ENTER 且 event.getAction == ACTION_DOWN时也触发
                //注意,这是一定要判断event != null。因为在某些输入法上会返回null。
                if (actionId == EditorInfo.IME_ACTION_SEND
                        || (event != null && KeyEvent.KEYCODE_ENTER == event.getKeyCode() && KeyEvent.ACTION_DOWN == event.getAction())) {
                    //处理事件=
                    ToastUtil.showShort("点击-->SEND");
                    isOK = true;
                }
                return isOK;
    }
}

希望后续找到更优的处理方案

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容