按Enter键时,OnKeyDown方法不会触发

时间:2015-01-12 14:11:47

标签: android

我需要在usario输入时输入名为textOrigem的文本视图自动填充功能。下面是我的代码,我调试,当我按任意键少输入时它来了。自动填充文本视图的属性为android:clickable = "true",但如果我输入则仍然不会输入该方法。

    textOrigem.setKeyListener(new KeyListener() {

        @Override
        public boolean onKeyUp(View view, Editable text, int keyCode, KeyEvent event) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public boolean onKeyOther(View view, Editable text, KeyEvent event) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public boolean onKeyDown(View view, Editable text, int keyCode,
                KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) {
                Log.d("Key", "enter_key_called");
            }
            return false;
        }

        @Override
        public int getInputType() {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public void clearMetaKeyState(View view, Editable content, int states) {
            // TODO Auto-generated method stub

        }
    });

2 个答案:

答案 0 :(得分:0)

也许试试TeextView.OnEditorActionListener?如果您的文本视图很少,则覆盖onEditorAction并在其中按View.getId切换。

答案 1 :(得分:0)

我对在Android中设置关键监听器并不太熟悉,但快速浏览一下getInputType no soft keyboard will be provided this一点点的文档:

  

根据InputType返回此键侦听器正在操作的文本类型。这用于确定为编辑器显示的软键盘的模式。   如果返回TYPE_NULL,则不会提供软键盘。换句话说,您必须提供自己的键盘用于屏幕输入,并且键监听器将用于处理来自硬键盘的输入。

我的猜测是 @Override public int getInputType() { // TODO Auto-generated method stub return TYPE_CLASS_TEXT; } 字面意思,这可以解释为什么Log没有被解雇。如果没有将日志添加到其他方法,以查看是否还有其他任何方法。

尝试这样做:

{{1}}