如何在 android EditText 中强制使用英文键盘

Posted

技术标签:

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

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

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

有什么想法吗?

【问题讨论】:

【参考方案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 的字符,例如,如果用户使用德语键盘并且将尝试输入特殊字母,而我正在过滤他将一无所获,这是令人困惑的行为。我想知道是否有办法告诉键盘保持英文布局...... 好吧,我会接受这个答案,直到出现更好的答案:-) 我认为这只是顶叶解决方案......

以上是关于如何在 android EditText 中强制使用英文键盘的主要内容,如果未能解决你的问题,请参考以下文章

如何强制EditText只接受数字?

如何使 EditText 小于默认值?

Android 如何使edittext默认失去焦点

如何在flutter中添加密码输入类型使密码用户输入不可见,就像Android Native EditText的inputtype:密码一样?

如何使数字的android edittext类似于DatePickerDialog上的向上/向下按钮?

Android如何在ListView中使EditText可编辑