Android监听软键盘回车事件
来源:互联网 发布:一个女人的史诗 知乎 编辑:程序博客网 时间:2024/05/20 18:52
在Android开发中,难免会碰到一些”意外“。比如输入法软按键监听问题,因为第三方输入法各有不同(对一些按键事件作了一些特殊的处理),所以有时有些代码会“失灵”。假设一个场景,EditText监听回车事件,回车后就发送输入的内容,一般有以下4种处理方式:
假设场景图:
1.setImeOptions
用代码设置:
或者在布局文件中设置:
2.setOnKeyListener
但是,这个接口有可能会“失灵”,看说明文档:
可知,这个接口主要是针对物理按键,软按键通常不会触发这个方法(存在可能性)。因此,这个方法不推荐。
3.dispatchKeyEvent
也可以在Activity或者Dialog里覆写dispatchKeyEvent来达到目的:
4.setOnEditorActionListener
这个方法应该是最正统也最合适的,一般的做法:
当然这个前提是要用1中的方法设置ImeOption,也就是改变软键盘上回车键的Action。但是,在实际使用中,发现在不同输入法上效果不同,某些输入法上根本不会改变回车键的Action,也就是actionId != EditorInfo.IME_ACTION_SEND,而是==EditorInfo.IME_ACTION_DONE。往往遇到如此问题时,可能第一反应就是选择2、3方法,但是2、3方法也有可能不奏效。那该怎么去适配软键盘呢?目光回到onEditorAction上,发现此回调接口带有3个参数,再看1、2、3方法,其实用到的就是IME_ACTION_XX和KeyEvent对象,而onEditorAction回调参数就有这两个。我们只需要在onEditorAction里再稍作处理就行了。比如:文档说明:
总结:软键盘回车键事件只需要用方法4就可以轻松解决,也是最合适的方法。
下面是原创:
注意清单文件中,千万不要写:
android:windowSoftInputMode="stateHidden 因为写了这个在调用隐藏软键盘的时候会造成
getWindow().getAttributes().softInputMode == WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN永远不会进入到
protected void hideSoftKeyboard() { if (getWindow().getAttributes().softInputMode != WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) { if (getCurrentFocus() != null) inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); }}执行隐藏软键盘的方法!!!
阅读全文
0 0
- android监听软键盘的回车事件
- Android监听软键盘回车事件
- Android监听软键盘回车事件
- Android监听软键盘回车事件
- Android监听软键盘回车事件
- 监听软键盘回车
- Android监听软键盘点击回车及换行事件
- Android 软键盘监听事件
- Android软键盘监听事件
- Android 软键盘监听事件
- Android 软键盘监听事件
- Android 软键盘监听事件
- Android 软键盘监听事件
- android 软键盘弹起监听事件
- Android监听软键盘打开收起事件
- EditText内容改变的监听及软键盘回车事件的监听
- android基础知识---重写软键盘回车的点击事件
- android 软键盘监听
- 通讯方式:近场通讯和无线通讯
- zabbix从小白到安装
- RabbitMQ之Topics
- android studio 设备调试及Logcat查看
- 滚动数组
- Android监听软键盘回车事件
- SQL Server 2016正式版安装(超多图)
- JUnit概述及一个简单例子(一)
- CSS3简单实现,数字滚动效果
- PreparedStatement 如何防止SQL注入
- Xshell5设置选中即复制功能
- VMware 新建虚拟机 弹出“您已输入用户名,客户机操作将保留此用户名”
- Oracle建立表空间和用户
- 【python】python数据结构(一)——线性表:顺序表的实现