【发布时间】:2010-12-01 12:15:46
【问题描述】:
我知道如何强制输入数字、文本等,但是如果我的数据库字段只能接受英文字符,是否有一个标志或 IME 选项让我强制 EditText 只接受某些语言,如英语?当然,我可以检查并通知用户输入错误,但这并不完全是用户友好的......
在 EditText 上实现我自己的过滤器也是可能的,但我不确定它是否会强制键盘布局本身使用我需要的语言。
有什么想法吗?
【问题讨论】:
我知道如何强制输入数字、文本等,但是如果我的数据库字段只能接受英文字符,是否有一个标志或 IME 选项让我强制 EditText 只接受某些语言,如英语?当然,我可以检查并通知用户输入错误,但这并不完全是用户友好的......
在 EditText 上实现我自己的过滤器也是可能的,但我不确定它是否会强制键盘布局本身使用我需要的语言。
有什么想法吗?
【问题讨论】:
仅限英文字符:
android:digits="abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ"
使用符号,您可以在数字字符串中定义:
android:digits="abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ !@#$%^*?"
【讨论】:
您可以使用flagForceAscii 或EditorInfo.IME_FLAG_FORCE_ASCII。该标志位于 IME 选项上。所以在 XML 中你可以把这个属性放在 EditText 中,
imeOptions="flagForceAscii"
当然,这只会影响键盘的初始状态。 https://developer.android.com/reference/android/view/inputmethod/EditorInfo.html#IME_FLAG_FORCE_ASCII
【讨论】:
对此的可能破解方法是使用 EditText 的 inputType,例如 textVisiblePassword。
这会强制键盘仅支持英文字符和数字,但不利的一面是它还禁用了键盘上的麦克风。
无论如何,这可以满足您的要求。
【讨论】:
无论如何,您可能应该过滤输入。强制英文键盘不会强制用户只使用英文字母。用户仍然可以长按字符或使用非英文硬件键盘。
您可以收听文本更改事件并拒绝此时您的数据库不接受的所有字符。
【讨论】: