android 软键盘和中文输入法冲突问题

之前在项目中碰到了一种情况,IC卡刷卡,通过给EditText添加输入监听的方式获取卡号,在这种情况下,如果android系统上安装了中文输入法,就会出现一种卡号读取不完整的情况,例如卡号如果是1234567890,那有可能第一次读取到的卡号123456,然后后面的7890会延迟添加到第二次读卡上,即第二次读卡卡号是78901234567890,如果是android系统本身没有安装中文输入法,那不会重现此情况,所以猜测这是android 软键盘和中文输入法出现冲突了,通过下面代码可以解决这个问题:

  • 强制隐藏软键盘,消除中文输入法软键盘的影响
//强制隐藏键盘,即使点击Edit也不会弹出。覆盖输入法窗口,如果需要可在edit的touch里清空这个属性
getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
  • 取消强制隐藏软键盘
//取消强制隐藏键盘
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);

通过上面两个命令,可以在需要中文输入法的时候将强制隐藏软键盘的标志取消,在中文输入法隐藏正常的刷卡读入的时候强制隐藏软键盘。

你可能感兴趣的:(android)