在我的Android计算器应用程序代码我有一个TextView&一个EditText。我使用android:maxLength =“10”来限制两个视图的输入最多10位数。我还想要小数点(点)&用户输入的符号( - )&用户能够做到这一点。但是当用户键入点或符号时,实际数字输入仅保留9位数。
问题是如何排除点和点?从被视为字符/数字&因此,用户可以用点和点输入10位数字。标志以及??? 请建议......
答案 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