刚刚做完输入法,收获颇多,特意分享一下。
    输入法启动的时候,onStartInput  回调方法会执行,editorInfo 参数中封装了文本框的一些基本信息,比如说文本框的类型,比如说是只能输入数字,密码,只能输入英文等等,当第一次启动时,restarting 参数的值是true。
    现在我还没有发现开启和关闭输入法的函数,不过可以根据条件判断是否执行输入法,在onKeyDown 函数中,通过 EditorInfo editorInfo = getCurrentInputEditorInfo();  取得 editorInfo;
if(editorInfo==null||editorInfo.inputType==InputType.TYPE_NULL){
         return super.onKeyDown(keyCode, event);
}
如果当前界面没有文本框,editorInfo==null,不执行输入法就可以了,按键功能按照系统的逻辑来处理,相当于关闭输入法。同时在onKeyUp中也这样做就可以了。不知道这个对你有没有帮助。