首页 文章

如何检测字符键按?

提问于
浏览
4

我知道在TextView中按下ENTER按钮时如何监听,如下面的代码所示:

textView.setOnKeyListener(new View.OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
            if((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
                enterPressed();
                return true;
            }
            return false;
        }
});

但是...如何按下字符键(A-Z,0-9,特殊字符等),基本上除了ENTER,BACKSPACE或SPACE之外的其他所有内容都会被按下?我想这样做是因为我希望当用户开始在TextView中键入文本时启用一个按钮 . 奇怪的是,当按下这些字符键时,甚至没有调用onKey()方法,那么我还有另一种方法可以听取它们吗?提前致谢!

3 回答

  • 6

    文本观察者可能会帮助您

    textView.addTextChangedListener(new TextWatcher(){
    
        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
    
        }
    
    });
    
  • 1

    “软键盘中的按键通常不会触发这种方法,虽然有些人可能会选择在某些情况下这样做 . 不要假设软件输入方法必须是基于密钥的;即使它是,它也可能使用按键 . 不同于预期的方式,因此无法可靠地捕捉软输入键按下 . “

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

  • 0

    你必须编写类似于isCharacter(int)的函数,将KeyEvent的keyCode传递给这个函数检查int的范围是什么 - 在你想要的字母和数字的字符范围内,如果是这样的话返回你是keypressed函数hanlde从isCharacter返回的true或false的情况...

相关问题