TextView / EditText MaxLength不应将点或符号视为数字/字符

时间:2014-12-29 20:02:53

标签: android

在我的Android计算器应用程序代码我有一个TextView&一个EditText。我使用android:maxLength =“10”来限制两个视图的输入最多10位数。我还想要小数点(点)&用户输入的符号( - )&用户能够做到这一点。但是当用户键入点或符号时,实际数字输入仅保留9位数。

问题是如何排除点和点?从被视为字符/数字&因此,用户可以用点和点输入10位数字。标志以及??? 请建议......

1 个答案:

答案 0 :(得分:0)

您可以使用setFilter()的{​​{1}}方法以及EditText限制某些字符的输入。下面的示例代码提供了如何将InputFilter应用于指定的InputFilter的示例:

EditText

上面的示例代码根据private EditText edInputField; private String sRestrictedCharacters = ".-"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edInputField = (EditText) findViewById(R.id.edInputField); edInputField.setFilters(new InputFilter[] { ipCharacterFilter }); } private InputFilter ipCharacterFilter = new InputFilter() { @Override public CharSequence ipCharacterFilter(CharSequence restrChars, int start, int end, Spanned dest, int dstart, int dend) { if (restrChars != null && blockCharacterSet.contains(("" + restrChars))) { return ""; } return null; } }; InputFilter中排除的字符创建String,然后使用{{1}将此过滤器应用于sRestrictedCharacters } 方法。如果您希望过滤EditText以外的其他字符。 setFilters(),您只需将所述字符附加到.

修改

您还可以使用-来动态增加sRestrictedCharacters中允许的字符数。考虑下面的例子......

创建InputFilter时,您可以创建一个过滤器来限制用户可以输入的字符数,如下所示:

EditText

然后,当您检测到输入了无效字符时,您只需增加允许的最大字符数并重新应用过滤器:

EditText