开发人员参考提到 OnKeyListener 仅适用于硬件按键事件:
“当硬件按键事件被调度到这个视图时,回调的接口定义。回调将在按键事件被分配给视图之前被调用。这只对硬件键盘有用;软件输入法没有义务触发这个监听器。”
但我想知道是否有办法用软键盘触发它?我知道它确实会触发某些设备,但并不一致。
开发人员参考提到 OnKeyListener 仅适用于硬件按键事件:
“当硬件按键事件被调度到这个视图时,回调的接口定义。回调将在按键事件被分配给视图之前被调用。这只对硬件键盘有用;软件输入法没有义务触发这个监听器。”
但我想知道是否有办法用软键盘触发它?我知道它确实会触发某些设备,但并不一致。
更新 9/12/2013
看起来我的旧答案只适用于某些软键盘,但不适用于其他软键盘。我尝试四处寻找替代方案,但找不到任何始终如一的工作。最后,我做了一个自定义键盘。幸运的是,我的键盘只需要数字,所以很容易创建。我按照本指南了解如何创建自定义键盘。
http://www.fampennings.nl/maarten/android/09keyboard/index.htm
旧答案
我四处搜索,看起来没有办法用 onKeyListener 来监听软键盘的键。但是,我能够扩展 EditText 并覆盖 onKeyUp() 工作正常。
public class CustomEditText extends EditText
{
public CustomEditText(Context context)
{
super(context);
}
public CustomEditText(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public CustomEditText(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event)
{
// Intercept keys here
return super.onKeyUp(keyCode, event);
}
}