Android:没有接收密钥的EditText的KeyListener

时间:2011-04-05 14:51:34

标签: android android-edittext keylistener

我有一个想要监视KeyEvents的EditText,我有一个监听器设置如下:

mText = (EditText) this.findViewById(R.id.title);
mText.setOnKeyListener(new OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        final int view = v.getId();
        switch (view) {
            case R.id.title:
                Log.d(LOG_TAG, "key handled");
                break;
        }
        return false;
    }
});

我的问题是,当使用虚拟键盘输入EditText时,触发记录的唯一按键是退格键。我已经确认所有其他按键都没有触发onKey()。我确信这很简单,但在SO上找不到任何似乎与此有关的东西。

谢谢,

3 个答案:

答案 0 :(得分:15)

尝试使用addTextChangedListener(TextWatcher watcher)定义here,您可以处理物理和软键盘。 我希望它有所帮助

答案 1 :(得分:5)

来自Android参考:

http://developer.android.com/reference/android/view/View.OnKeyListener.html

View.OnKeyListener

班级概述 将硬件键事件调度到此视图时要调用的回调的接口定义。在将键事件提供给视图之前将调用回调。这仅适用于硬件键盘; 软件输入法没有义务触发此监听器。

OnKeyListener似乎只是为了对HARDWARE键做出反应而设计!

答案 2 :(得分:-1)

onKeyListener仅适用于:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

onCreate方法中设置。