Android keyListener无法识别输入
我在editText上有一个KeyListener,如下所示:Android keyListener无法识别输入,android,android-edittext,android-softkeyboard,onkeylistener,Android,Android Edittext,Android Softkeyboard,Onkeylistener,我在editText上有一个KeyListener,如下所示: tip = (EditText) findViewById(R.id.tip); tip.setOnKeyListener(new EditText.OnKeyListener(){ public boolean onKey(View v, int keyCode, KeyEvent event) { Log.i("debug123", "onKeyListener. event.getKeyCode():
tip = (EditText) findViewById(R.id.tip);
tip.setOnKeyListener(new EditText.OnKeyListener(){
public boolean onKey(View v, int keyCode, KeyEvent event) {
Log.i("debug123", "onKeyListener. event.getKeyCode(): " + event.getKeyCode());
// If the event is a key-down event on the "enter" button
if ((event.getAction() == KeyEvent.ACTION_DOWN) && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
checkInput();
return true;
}
return false;
}
});
但不能识别软键盘笔划。?
只有当我使用后退按钮(硬件按钮)离开活动时,侦听器才能识别该操作。
但从我所读到的所有内容来看,如果我想在EditText上使用用户输入,这是一种方法。setOnKeyListener
注册一个回调,以便在按下硬件键时调用
这是一种观点。软件中的按键输入法通常不会
触发此侦听器的方法
setOnEditorActionListener
设置在上执行操作时要调用的特殊侦听器
文本视图。当按下回车键或
用户选择提供给IME的操作
要使用setOnEditorActionListener
解决您的问题,请检查以下内容:
- 将
和imeOptions
添加到您的inputType
EditText
从软键盘(IME)处理操作actionId==EditorInfo.IME\u ACTION\u DONE
handle从硬件键盘输入键event.getKeyCode()==KeyEvent.KEYCODE\u输入&&event.getAction()==KeyEvent.ACTION\u向下
setOnEditorActionListener
代替setOnKeyListener
用于您的目的检查是否对您有帮助。不,这对我不起作用。我在一部旧的智能手机上试用了这个应用程序(使用setOnKeyListener解决方案),效果如预期。但不是在我的新手机上。你能更新你的代码吗?你在布局方面做了哪些尝试?这应该行得通。这是测试,我没有输入部分的布局部分。现在它工作了,谢谢:)
<EditText
android:id="@+id/tip"
android:imeOptions="actionDone"
android:inputType="text"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
tip.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if ( (actionId == EditorInfo.IME_ACTION_DONE) || (event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) ) {
checkInput();
return true;
} else {
return false;
}
}
});