【发布时间】:2022-01-22 18:17:11
【问题描述】:
我正在尝试向我的 EditText 添加一个 InputFilter,它必须只允许整数或只有一个小数点的小数。
接受的输入必须是:
1 - 12 - 3.33 - 4.20 etc.
拒绝:
.0 - 5. - 5.5.5 - 40.21.1 etc.
我创建了一个自定义 InputFilter 来检查输入是否符合 RegExp ^\d+(\.\d+)?$
但 EditText 总是显示一个空字符串,在调试中“spanned”总是空的,而默认情况下 EditText 有一个起始值。
过滤器:
public class DecimalDigitsFilter implements InputFilter {
@Override
public CharSequence filter(CharSequence charSequence, int i, int i1, Spanned spanned, int i2, int i3) {
Pattern pattern = Pattern.compile("^\\d+(\\.\\d+)?$");
Matcher matcher = pattern.matcher(spanned);
if (!matcher.matches()){
return "";
}
return null;
}
}
活动:
quantita.setFilters(new InputFilter[] {new DecimalDigitsFilter()});
【问题讨论】: