当设置OnKeyListener时,退格/删除键无法正常使用。
我在EditText上设置了OnKeyListener。然后某些键的默认操作就不能正常工作了,比如DELETE/Backspace。然后我改用自己的文本删除函数来操作字符串。但这似乎非常复杂。
我必须获取选择内容,进行子字符串处理等等。有没有其他解决方案可以使键正常工作?
当设置OnKeyListener时,退格/删除键无法正常使用。
我在EditText上设置了OnKeyListener。然后某些键的默认操作就不能正常工作了,比如DELETE/Backspace。然后我改用自己的文本删除函数来操作字符串。但这似乎非常复杂。
我必须获取选择内容,进行子字符串处理等等。有没有其他解决方案可以使键正常工作?
这取决于您使用的输入法。 一些输入法实现的删除功能并不通过发送KEYCODE_DEL来完成。 建议尝试使用除默认输入法之外的其他输入法。
例如,如果您长按DEL按钮,某些输入法将删除编辑框中的所有文本。 这无法通过KEYCODE_DEL完成。
我也遇到了这个问题,我通过在onKeyListener函数中返回false来解决它。这应该会在其他键上执行正常操作。
.setOnKeyListener(new DialogInterface.OnKeyListener()
{
@Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event)
{
//your workarounds;
return false;
}
})
有两个已知问题影响着随 Android 一起发行的默认(LatinIME)Google 键盘的 KEYCODE_DEL:问题 42904 和 62306。
我已经研究了这个问题,并设计了一个解决方法,使用代码似乎可以解决这两个问题。该解决方法可以在此处找到:
Android - cannot capture backspace/delete press in soft. keyboard
我遇到了和你一样的问题,但是我偶然发现了解决方法。显然,我将setOnKeyListener设置为'return true'。当我将其更改为'return false'后,手机键盘再次可以完美地在edittext上使用退格键。希望这可以帮到你:
解决方案:你现有的onkeylistener代码之一包含'return true'。通过将现有代码从'return true'更改为'return false'来纠正它。
.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
...
return false;
}
});