部分键盘del键无法响应onkeyListener事件,包括google原生键盘

之前我们想要在EditText中监听软件盘都会使用以下方法

editText.setOnKeyListener(new OnKeyListener() {@Overridepublic boolean onKey(View v, int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_DEL && event.getAction() == KeyEvent.ACTION_DOWN) {//点击了删除键}return false}});

但是在实际使用中会发现部分键盘是不相应这个事件的,比如华为和vivo键盘

自定义EditText重写InputConnectionWrapper

public class CodeInputEditText extends EditText {private OnDelKeyEventListener delKeyEventListener;public CodeInputEditText(Context context) {super(context);}public CodeInputEditText(Context context, AttributeSet attrs) {super(context, attrs);}public CodeInputEditText(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}@Overridepublic InputConnection onCreateInputConnection(EditorInfo outAttrs) {return new ZanyInputConnection(super.onCreateInputConnection(outAttrs), true,this);}/***重写InputConnectionWrapper*/private class ZanyInputConnection extends InputConnectionWrapper {CodeInputEditText editText;public ZanyInputConnection(InputConnection target, boolean mutable, CodeInputEditText editText) {super(target, mutable);this.editText = editText;}/*** 重新 sendKeyEnvent 通过监听通知外部删除键被点击*/@Overridepublic boolean sendKeyEvent(KeyEvent event) {if (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_DEL) {if (delKeyEventListener != null) {delKeyEventListener.onDeleteClick(editText);}}return super.sendKeyEvent(event);}/***这个方法必需写在有些情况下删除键只会调用该方法,不会调用sendKeyEvent需要手动调用下*/@Overridepublic boolean deleteSurroundingText(int beforeLength, int afterLength) {sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL));return super.deleteSurroundingText(beforeLength, afterLength);}}public void setDelKeyEventListener(OnDelKeyEventListener delKeyEventListener) {this.delKeyEventListener = delKeyEventListener;}public interface OnDelKeyEventListener {void onDeleteClick(CodeInputEditText editText);}}

部分键盘删除键无法响应onkeyListener事件,包括google原生键盘相关推荐

  1. keyboard ios 虚拟键盘 删除键的响应

    uitextview 的处理 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replac ...

  2. html focus 唤醒手机键盘,移动端 input 元素 focus 的时候调出键盘(自动触发 focus 事件的同时调出键盘)?...

    UYOU 安卓我目前没有遇到问题.然后直接使用input.focus()是无法在ios中调起键盘的,因为ios中input元素的focus必须由事件触发.此外,如果模拟了触摸事件,但是在setTime ...

  3. 7、osg中响应键盘鼠标事件以及鼠标和键盘编码表

    1.首先定义一个类,该类继承与osgGA::GUIEventHandler,在此类中存在一个handle函数,所有的事件都在此函数中进行处理,如下类的代码: //声明类UseEventHandler, ...

  4. 键盘事件是什么?键盘事件包括哪几种?

    什么是键盘事件 键盘事件是指用户在使用键盘时触发的事件.例如,用户按Esc键关闭打开的状态栏,按Enter键直接完成光标的上下切换等.下面列举几个常用的键盘事件,如表所示. 事件名称 事件触发时机 k ...

  5. JS-鼠标-键盘-文档-表单事件

    JS-鼠标-键盘-文档-表单事件 1 回顾 1.1 节点创建.添加.删除.替换.克隆 创建元素: document.createElement('标签名')添加子节点: 父元素.appendChild ...

  6. VB完全控制IE浏览器,操作ie对象,响应ie事件

    IE浏览器完全控制   ,相信现在绝大多数计算机上使用的是IE浏览器.如何通过编程控制IE的操作呢,本文将一步步介绍如何通过VB  调用IE的对象库来对IE进行控制.    本文使用的编程工具是VB6 ...

  7. iOS-监听UITextView、UITextField键盘删除键

    今天做了一个设置锁屏密码功能,其中我使用的是四个UITextField,上一个UITextField输入之后,下一个UITextField响应,这时的UITextField里面没有任何值,我想过使用U ...

  8. Android 响应用户事件的方法

    同绘图一样, View 也是通过回调函数来响应用户事件的.键盘事件的回调函数有多个,以对应不同的事件,我们暂时只用到 onKeyDown ,对应按键被按下的事件,其他函数以后用到再介绍.让我们重载 o ...

  9. cocos2d ccLayer响应触摸事件方法:CCStandardTouchDelegate 与 CCTargetedTouchDelegate

    cocos2d ccLayer响应触摸事件方法:CCStandardTouchDelegate 与 CCTargetedTouchDelegate    以下内容转载自:http://blog.sin ...

最新文章

  1. Flash正式成为Googel Chrome浏览器内置插件
  2. Servlet学习笔记(七)—— 自己定义过滤器的编写改进:自己定义实现FilterChain...
  3. jzoj4742-单峰【数学,数论】
  4. Linux系统【四】进程间通信-管道
  5. Android 识别图片二维码
  6. 算法(八):图解KNN算法
  7. 英特尔:我们解决VR体验所需的强大计算量
  8. 电脑word在哪_焦作市周边商务电脑办公入门培训
  9. 7x android 8,内测开启 华为荣耀畅玩7X升级Android 8.0
  10. 软件测试管理者会遇到那些问题?
  11. android qq robot,KG Robot(QQ机器人手机版)
  12. 图解机器学习算法(14) | PCA降维算法详解(机器学习通关指南·完结)
  13. 微信小程序帮你赚到第一桶金
  14. Linux进程突然被杀掉(OOM killer),查看系统日志
  15. python web py入门(4)-从数据库读取数据显示到网页
  16. 华为手机如何安装google play, chrome等
  17. 在Linux(fedora 20)上解压缩rar文件
  18. requests.exceptions.ConnectionError:HTTPSConnectionPool(host
  19. 跟涛哥一起学嵌入式 25:我接触过近50块嵌入式开发板,分享一下教训和总结...
  20. Kafka 生产者、消费者命令行操作

热门文章

  1. factorio蓝图代码_任何复杂系统都是由简单构建起来的——Factorio 和软件工程
  2. 没有学历文凭如何学习java开发呢
  3. Js去除文字中的换行符
  4. js获取和设置DIV元素class值的方法
  5. linux sudo 命令无法使用,Linux运维知识之解决Linux下无法使用sudo命令问题
  6. php时间戳中的月,php处理时间戳解决时间戳中月份、日期前带不带0的问题
  7. DOS基本命令与批处理(附小程序实战)
  8. 爬取京东商品评价并生成词云
  9. 迪杰斯特拉算法(入门理解)
  10. Word怎么整改图片的颜色格式?简单技巧!word如何设置图片颜色格式?