【问题标题】:Android: Blocking keys from virtual keyboardAndroid:阻止来自虚拟键盘的键
【发布时间】:2011-01-26 15:36:09
【问题描述】:

我想允许用户在 Galaxy 选项卡 (Android 2.2) 上的 EditText 中仅输入某些字符,但阻止所有其他字符。 OnKeyListener 似乎对软键盘没有反应。

PS:我不想阻止整个字符范围,例如所有数字或所有特殊字符等。假设只是字符“t”。

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

【问题讨论】:

    标签: java android


    【解决方案1】:

    我相信您需要奇怪且不一致的名称TextWatcher,然后用它调用EditText.addTextChangedListener()

    【讨论】:

    • 不,我需要阻止/删除某些字符。我认为这对于 TextWatcher 是不可能的,因为它会在无限循环或崩溃中递归地调用自己。我找到了 InputFilters 的解决方案。
    • 有可能,因为我已经做到了。不过,自定义 InputFilter 可能更好。
    • 是的,可以使用 TextWatcher 执行此操作,您只需要在进行更改时小心。
    • “这可能是因为我已经做到了。”:好的……很高兴知道你是如何做到的。 ;-) 我的应用程序总是崩溃。
    • 它是如何崩溃的?递归的堆栈溢出(ho-ho)?如果您的侦听器正在修改文本,只需在侦听器中使用布尔变量即可跳过处理。但我认为你的 InputFilter 是一个更好的方法,如果你能让它工作......我忘记了那些东西存在。 :)
    【解决方案2】:

    调用 onKeyDown 事件,并监听按下的键,如果键是允许的,则将其添加到您的字符串中,如果不是,则不要将其添加到字符串中。那,或者在所有无效字符的 keydown 之后剥离字符串。尝试http://www.rgagnon.com/javadetails/java-0030.html 以获得答案。那是java代码,但我相信所有这些都会延续到android中。希望有帮助

    【讨论】:

    • 据我所知,这仅适用于设备上的硬键?我已经使用 TextWatcher 类和链接中的代码 sn-p 进行了尝试,但它以无限循环/应用程序崩溃结束。
    猜你喜欢
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2011-12-29
    • 2011-01-04
    • 1970-01-01
    • 2013-03-14
    相关资源
    最近更新 更多