如何限制Android EditText字段中的特殊字符?
mzsu5hc01#
您尝试过添加android:digits="abcde.....0123456789"属性吗?虽然android:digits指定它是一个数字字段,但我确实可以将其设置为接受字母和特殊字符(在SDK-7上测试)。如果这不起作用,那么您必须实现KeyListener,请参阅:(文本方法键监听器)
android:digits="abcde.....0123456789"
android:digits
KeyListener
vwoqyblh2#
只需将EditText对象传递给此方法。还要在变量blockCharacterSet中添加要阻止的值。
private void disableSpecialChar(EditText editText) { final String blockCharacterSet = "<>"; InputFilter filter = new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { if (source != null && blockCharacterSet.contains(("" + source))) { return ""; } return null; } }; editText.setFilters(new InputFilter[] { filter }); }
iklwldmw3#
我在回答中已经解决了这个问题:Prevent special symbols in EditText。您可以根据需要更改正则表达式。
yr9zkbsy4#
只需将xml行下方放入edittext块中。
android:digits="abc"
这将允许仅输入a、B和c字符。
a5g8bdjr5#
我创建了一个类,以便更灵活地设置EditText的输入约束:https://github.com/devapro/NumberWatcher它仅用于数字输入,但您可以为任何类型更改它。
b1zrtrql6#
以下是包含空格的Kotlin版本:
private val userNameFilter = InputFilter { source, start, end, dest, dStart, dEnd -> for (i in start until end) { if (!Character.isLetterOrDigit(source[i]) && !Character.isWhitespace(source[i])) { return@InputFilter "" } } null }
6条答案
按热度按时间mzsu5hc01#
您尝试过添加
android:digits="abcde.....0123456789"
属性吗?虽然android:digits
指定它是一个数字字段,但我确实可以将其设置为接受字母和特殊字符(在SDK-7上测试)。如果这不起作用,那么您必须实现
KeyListener
,请参阅:(文本方法键监听器)vwoqyblh2#
只需将EditText对象传递给此方法。还要在变量blockCharacterSet中添加要阻止的值。
iklwldmw3#
我在回答中已经解决了这个问题:Prevent special symbols in EditText。您可以根据需要更改正则表达式。
yr9zkbsy4#
只需将xml行下方放入edittext块中。
这将允许仅输入a、B和c字符。
a5g8bdjr5#
我创建了一个类,以便更灵活地设置EditText的输入约束:
https://github.com/devapro/NumberWatcher
它仅用于数字输入,但您可以为任何类型更改它。
b1zrtrql6#
以下是包含空格的Kotlin版本: