android自定义输入法判断是否在输入状态的问题
来源:互联网 发布:ubuntu 文件夹root权限 编辑:程序博客网 时间:2024/06/05 02:33
工作中遇到一个需要判断输入法是否是在输入的状态的需求,输入法不需要显示在界面。
既然不需要输入法界面,那么让onCreateInputView时返回空。
检查inputmethodservice的API发现InputMethodService中有 onStartInput,showWindow和hideWindow,onFinishInput,onWindowShown,onWindowHidden,isInputViewShown等方法
根据经验判断onWindowShown和onWindowHidden应该是输入法触发输入和隐藏的回调.
实际测试结果
1.onWindowShown没有被调用,onWindowHidden有被调用。
2.showWindow没有被调用,而hideWindow有被调用。
3.在普通edittext中触发输入法onStartInput有被调用,而在网页中触发焦点时onStartInput没调用一次,把焦点移到网页中的空白部分,触发hideWind,再触发网页输入框焦点没有被调用onStartInput,也没调用showWindow
4.isInputViewShown无法是否在输入状态都返回false.
5.onFinishInput方法在输入法隐藏时有被调用。
这样的API太不可靠了。
难道就没有办法了吗?继续从网上下载开源的OpenWnn输入法,发现它的showWindow和hideWindow方法回调非常准确。
把给输入法加上了inputview。但是又遇到onCreateInputView没有被调用的问题,检查android api发现这样一段话。
http://www.apihome.cn/api/android/InputMethodService.html
onEvaluateInputViewShown
public boolean onEvaluateInputViewShown()
Override this to control when the soft input area should be shown to the user. The default implementation only shows the input view when there is no hard keyboard or the keyboard is hidden. If you change what this returns, you will need to call updateInputViewShown() yourself whenever the returned value may have changed to have it re-evalauted and applied.
原来默认的实现是只有在没有物理键盘或者键盘隐藏时才返回显示输入法视图。因此解决方法是关闭物理键盘或者重写这个方法,永久返回true.
解决了上面的问题后onCreateInputView有被调用。同时showWindow和hideWindow方法也有被正确调用。在showWindow和hideWindow方法中可以准确的判断输入法是否有在输入的状态。
0 0
- android自定义输入法判断是否在输入状态的问题
- ios--uitextfield动态限制输入的字数(解决方案) 汉字和英文状态区别 判断当前输入法是否是中文
- 解决EditText在输入状态下点击其他区域隐藏输入法的问题
- android 判断输入法是否打开
- Android判断网络状态是否可用的
- Android 自定义view接收输入法输入的内容并显示在view上
- android判断是否连接wifi和网络状态的判断
- 在android中如何判断当前的apk是否处于运行状态
- 在android输入框中判断是否有Emoji表情
- 在智能ABC输入法的中文输入状态下输入英文
- Android判断当前的android设备是否处于联网状态
- Android中判断输入的字符串是否为数字,可以解决如输入为点出现的问题
- C# 判断文件是否在使用的状态FSDF
- 判断字符串是否包含空格或在全角状态下输入
- 如何解决Android中输入法挡住输入框的问题
- 如何解决Android中输入法挡住输入框的问题
- android 中解决输入法挡住输入框的问题
- 如何解决Android中输入法挡住输入框的问题
- Angular2-primeNG 文件上传模块FileUpload
- Repeater绑定dictionary数据源代码及报错解决
- LeetCode No.9 Palindrome Number
- 校门外的树
- 09-排序2 Insert or Merge (25分)
- android自定义输入法判断是否在输入状态的问题
- CXF
- Linux 文件权限与目录配置(有机会可以挑战FHS英文官方文档来加深你对目录了解)
- JianZhiOffer_p33_把数组排成最小的数
- 中国最著名的黑客排行榜
- ubuntu下nginx安装
- LeetCode No.13 Roman to Integer
- windows7_64 安装python,theano和Keras
- linux下mysql中文错误或乱码问题解决