监听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);
}
};
}
}