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

2021-08-07  本文已影响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);
                        }
                    };
    }
 
    
}
 

上一篇下一篇

猜你喜欢

热点阅读