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

如何在android EditText中强制使用英文键盘,android,keyboard,culture,Android,Keyboard,Culture,我知道如何强制数字、文本等。。但是,如果我的DB字段只能接受英文字符,是否有标志或IME选项可以强制EditText只接受某些语言(如英语)?当然,我可以检查并通知用户错误的输入,但这并不完全是用户友好的 在EditText上实现我自己的过滤器也是可能的,但我不确定它是否会强制键盘布局本身使用我需要的语言 有什么想法吗?无论如何,你都应该过滤输入。强制使用英文键盘并不会强制用户只使用英文字母。用户仍然可以长按字符或使用非英语硬件键盘 您可以侦听文本更改事件并拒绝数据库当时不接受的所有字符。您可以

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

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


有什么想法吗?

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


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

您可以使用
flagForceAscii
EditorInfo.IME\u FLAG\u FORCE\u ASCII
。该标志位于IME选项上。因此,在XML中,您可以将此属性放在EditText中,

imeOptions=“flagForceAscii”

当然,这只会影响键盘的初始状态。

仅适用于英文字符:

android:digits="abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ"
对于符号,您可以使用数字字符串定义:

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

可能的破解方法是使用EditText的
inputType
类似
textVisiblePassword
。 这迫使键盘只支持英文字符和数字,但在不利的一面,它还禁用了键盘上的麦克风


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

基本上,当您将inputMethod设置为“正常”以外的值时,如果用户使用德语键盘并尝试输入特殊字母,EditText将不允许您输入任何与您允许的输入类型不同的字符,我在过滤,他什么也得不到,这是令人困惑的行为。我想知道是否有办法告诉键盘保持它的英文布局…好吧,我会接受这个答案,直到一个更好的答案出现:-)我认为这只是顶叶的解决方案…很好,但我也不能改变键盘上的语言