5

我知道如何在 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;
        }
});

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

4

3 回答 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

    }

});
于 2011-06-29T05:05:12.897 回答
1

“软件键盘中的按键通常不会触发此方法,尽管有些人可能会在某些情况下选择这样做。不要假设软件输入法必须是基于按键的;即使是,它也可能在与您预期的方式不同,因此无法可靠地捕获软输入按键。”

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

于 2013-06-06T23:25:30.163 回答
0

你将不得不编写一个类似 isCharacter(int) 的函数,将 KeyEvent 的 keyCode 传递给这个函数检查 int 的范围是什么 - 在你想要的字母和数字的字符范围内,如果是这样 returnTrue 在你按键函数处理从isCharacter返回的真或假的情况......

于 2011-06-29T04:51:26.950 回答