美文网首页
监听Android键盘@,实现聊天界面@弹出

监听Android键盘@,实现聊天界面@弹出

作者: 吕志豪 | 来源:发表于2021-08-07 17:55 被阅读0次

    setOnKeyListener不可靠,硬键盘可靠,软键盘不可靠

    Interface definition for a callback to be invoked when a hardware key event is dispatched to this view.   
    The callback will be invoked before the key event is given to the view.   
    This is only useful for hardware keyboards;  
     a software input method has no obligation to trigger this listener.
    
    当硬件键事件被分派到此视图时,要调用的回调的接口定义。
    回调函数将在键事件被赋予视图之前被调用。
    这只对硬件键盘有用;
    软件输入法没有义务触发这个监听器。
    

    使用InputConnection,重写onCreateInputConnection放在,在commitText方法里,监听按键

    public class TEditText extends AppCompatEditText {
        public TEditText(Context context) {
            super(context);
        }
     
        public TEditText(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
     
        public TEditText(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
     
        /**
         * 当输入法和EditText建立连接的时候会通过这个方法返回一个InputConnection。
         * 我们需要代理这个方法的父类方法生成的InputConnection并返回我们自己的代理类。
         */
        @Override
        public InputConnection onCreateInputConnection(EditorInfo editorInfo) {
             return new InputConnectionWrapper(super.onCreateInputConnection(editorInfo),false) {
                            public boolean commitText(CharSequence text, int newCursorPosition) {
                                if (text.equals("@")) {
    
                                }
                                return super.commitText(text, newCursorPosition);
                            }
                        };
        }
     
        
    }
     
    
    

    相关文章

      网友评论

          本文标题:监听Android键盘@,实现聊天界面@弹出

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