美文网首页
EditText属性imeOption="actionSend"

EditText属性imeOption="actionSend"

作者: zizi192 | 来源:发表于2017-04-07 12:07 被阅读0次

    为了将软键盘的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;
        }
    }
    

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

    相关文章

      网友评论

          本文标题:EditText属性imeOption="actionSend"

          本文链接:https://www.haomeiwen.com/subject/avthattx.html