我知道在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()方法,那么我是否有另一种方法可以听取它们?提前谢谢!
答案 0 :(得分: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 :(得分:1)
“软键盘中的按键通常不会触发此方法,尽管有些人可能会选择在某些情况下这样做。不要假设软件输入方法必须是基于密钥的;即使它是,它也可能使用密钥以不同于预期的方式按压,因此无法可靠地捕捉软输入键按下。“
http://developer.android.com/reference/android/view/View.OnKeyListener.html
答案 2 :(得分:0)
你必须写一个像isCharacter(int)这样的函数, 将KeyEvent的keyCode传递给此函数 检查int的范围是什么 - 在你想要的字母和数字的字符范围内,如果是这样的话,返回TrueTrue 在你的keypressed函数hanlde从isCharacter返回的true或false的情况...