Java Android:阻止来自虚拟键盘的按键

Java Android:阻止来自虚拟键盘的按键,java,android,Java,Android,我想允许用户在galaxy选项卡(Android 2.2)的编辑文本中只输入某些字符,但阻止所有其他字符。OnKeyListener似乎对软件键盘没有反应 PS:我不想阻止整个字符范围,比如所有数字或所有特殊字符等等。让我们只说字符“t” 请帮忙。一个小时后,我找不到解决方案。我认为您需要命名奇怪且不一致的,然后用它调用。调用onKeyDown事件,并侦听所按下的键,如果该键是允许的,则将其添加到字符串中,如果不允许,则不要将其添加到字符串中。或者在键入所有无效字符后删除字符串。试着回答这个问题

我想允许用户在galaxy选项卡(Android 2.2)的编辑文本中只输入某些字符,但阻止所有其他字符。OnKeyListener似乎对软件键盘没有反应

PS:我不想阻止整个字符范围,比如所有数字或所有特殊字符等等。让我们只说字符“t”


请帮忙。一个小时后,我找不到解决方案。

我认为您需要命名奇怪且不一致的,然后用它调用。

调用onKeyDown事件,并侦听所按下的键,如果该键是允许的,则将其添加到字符串中,如果不允许,则不要将其添加到字符串中。或者在键入所有无效字符后删除字符串。试着回答这个问题。这是java代码,但我相信所有这些都会延续到android中。希望这有帮助

不,我需要阻止/删除某些字符。我认为这在TextWatcher中是不可能的,因为它会在无限循环中递归调用自己,或者崩溃。我找到了一个使用InputFilters的解决方案。这是可能的,因为我已经完成了。不过,自定义InputFilter可能更好。是的,使用TextWatcher可以做到这一点,您只需要在进行更改时小心。“这是可能的,因为我已经完成了。”:好的。。。很高兴知道你是怎么做到的我的应用程序总是崩溃。它是如何崩溃的?来自递归的堆栈溢出(ho ho)?如果是您的侦听器修改文本,只需在侦听器中使用布尔变量即可跳过处理。但我认为你的输入过滤器是一个更好的方式,如果你能让它工作。。。我忘记了那些东西的存在据我所知,这只适用于设备上的硬键?我已经用TextWatcher类和链接中的代码片段尝试过了,但最终导致无限循环/应用程序崩溃。