【问题标题】:How to force English keyboard in android EditText如何在 android EditText 中强制使用英文键盘
【发布时间】:2010-12-01 12:15:46
【问题描述】:

我知道如何强制输入数字、文本等,但是如果我的数据库字段只能接受英文字符,是否有一个标志或 IME 选项让我强制 EditText 只接受某些语言,如英语?当然,我可以检查并通知用户输入错误,但这并不完全是用户友好的......

在 EditText 上实现我自己的过滤器也是可能的,但我不确定它是否会强制键盘布局本身使用我需要的语言。

有什么想法吗?

【问题讨论】:

    标签: android keyboard culture


    【解决方案1】:

    仅限英文字符:

    android:digits="abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    

    使用符号,您可以在数字字符串中定义:

    android:digits="abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ !@#$%^*?"
    

    【讨论】:

      【解决方案2】:

      您可以使用flagForceAsciiEditorInfo.IME_FLAG_FORCE_ASCII。该标志位于 IME 选项上。所以在 XML 中你可以把这个属性放在 EditText 中, imeOptions="flagForceAscii"

      当然,这只会影响键盘的初始状态。 https://developer.android.com/reference/android/view/inputmethod/EditorInfo.html#IME_FLAG_FORCE_ASCII

      【讨论】:

      • 很好,但我也无法更改键盘上的语言
      【解决方案3】:

      对此的可能破解方法是使用 EditText 的 inputType,例如 textVisiblePassword。 这会强制键盘仅支持英文字符和数字,但不利的一面是它还禁用了键盘上的麦克风。

      无论如何,这可以满足您的要求。

      【讨论】:

        【解决方案4】:

        无论如何,您可能应该过滤输入。强制英文键盘不会强制用户只使用英文字母。用户仍然可以长按字符或使用非英文硬件键盘。

        您可以收听文本更改事件并拒绝此时您的数据库不接受的所有字符。

        【讨论】:

        • 基本上,当您将 inputMethod 设置为“正常”以外的某个值时,EditText 将不允许您输入任何不属于您允许的 InputType 的字符,例如,如果用户使用德语键盘并且将尝试输入特殊字母,而我正在过滤他将一无所获,这是令人困惑的行为。我想知道是否有办法告诉键盘保持英文布局......
        • 好吧,我会接受这个答案,直到出现更好的答案:-) 我认为这只是顶叶解决方案......
        猜你喜欢
        • 2014-10-05
        • 1970-01-01
        • 1970-01-01
        • 2014-03-17
        • 1970-01-01
        • 1970-01-01
        • 2018-02-11
        • 2013-01-18
        • 1970-01-01
        相关资源
        最近更新 更多