【问题标题】:how to find which key is pressed in android?如何找到在android中按下了哪个键?
【发布时间】:2012-08-10 01:55:30
【问题描述】:

我想知道按下了哪个键。我有一个 EditText 并为它添加了一个 KeyListener。但它似乎不起作用。我有一个文本视图,我想设置在文本视图上按下的 setText。

edittext = (EditText)findViewById(bla);
textview = (TextView)findViewById(bla);
edittext.setKeyListener(new Keylistener(){
@Override
                    public void clearMetaKeyState(View view,
                            Editable content, int states)    {
                        // TODO Auto-generated method stub

                    }

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

                    @Override
                    public boolean onKeyDown(View view, Editable text,
                            int keyCode, KeyEvent event) {

                        if(keyCode==KeyEvent.KEYCODE_DEL){
                            textview.setText("delete");
                        }
                        // 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 onKeyUp(View view, Editable text,
                            int keyCode, KeyEvent event) {
                        if(keyCode==KeyEvent.KEYCODE_DEL){
                            textview.setText("delete");
                        }
                        return false;
                    }

 });

这应该非常简单,但我无法让它工作:)

【问题讨论】:

  • 什么不起作用?有什么错误吗?
  • 也没有错误。只是它似乎没有在听。我放了一个日志看看发生了什么,但块监听器没有被解雇。

标签: android android-softkeyboard keylistener


【解决方案1】:

试试这个。这个适用于我的项目。

    editext.setOnKeyListener(new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if( (event.getAction() == KeyEvent.ACTION_DOWN) && 
                    (keyCode == KeyEvent.KEYCODE_DEL) ){
                Log.d(TAG, "Delete key clicked !");

                return true;
            }
            return false;
        }
    });

如果这不起作用,您可能听错了 EditText。检查您的 findViewById 以查看您的 id 是否正确。

【讨论】:

    猜你喜欢
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多