我的要求是当用户输入10位数字,一个点和两个小数点(0123456789.00)。一旦用户自动输入此格式,编辑文本应该停止向其添加文本。用户不应输入超过一点。
是否有可能..?。需要帮助
提前谢谢..!
答案 0 :(得分:2)
您可以使用EditText
将文字过滤器应用于editText.setFilters(filter)
,因此使用的方法如下:
text = (EditText) findViewById(R.id.text);
validate_text(text);
// the method validate_text that forces the user to a specific pattern
protected void validate_text(EditText text) {
InputFilter[] filter = new InputFilter[1];
filter[0] = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
if (end > start) {
String destText = dest.toString();
String resultingText = destText.substring(0, dstart)
+ source.subSequence(start, end)
+ destText.substring(dend);
if (!resultingText
.matches("^\\d{1,10}(\\.(\\d{1,2})?)?")) {
return "";
}
}
return null;
}
};
text.setFilters(filter);
}
这会强制用户输入" dot"输入数字后,将强制他仅输入"两位数字"在" dot"。
之后答案 1 :(得分:0)
您可以在编辑文本中添加TextWatcher并收听文字编辑事件。
答案 2 :(得分:0)
答案 3 :(得分:0)
我没有尝试过,但它应该有用。
final Editable text = new SpannableStringBuilder("example");
boolean stop = false;
et.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if(stop) {
s = text;
} else if (text.toString().equals(s.toString())) {
stop = true;
}
}
});