我认为您的代码与使用相同的问题:
安卓的inputType = “numberDecimal”
机器人:位数=“0123456789”
(除了你的代码更通用)
问题 – 据我所知,当inputType为numberDecimal时,某些键盘只是不尊重数字属性.这是一个documented bug,我发现避免这种行为的唯一方法是使用inputType =“text”并设置输入过滤器来限制字符.当然,键盘不适合数字,但找不到更好的解决方案.过滤器将是这样的:
mEditText.setFilters(new InputFilter[] { new DecimalInputFilter() });
public class DecimalInputFilter implements InputFilter {
private static final String ALLOWED_CHARS = "0123456789,";
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (source instanceof SpannableStringBuilder) {
final SpannableStringBuilder sourceAsSpannableBuilder = (SpannableStringBuilder)source;
for (int i = end - 1; i >= start; i--) {
final char currentChar = source.charAt(i);
if (!StringUtils.contains(ALLOWED_CHARS, currentChar)) {
sourceAsSpannableBuilder.delete(i, i+1);
}
}
return source;
} else {
final StringBuilder filteredStringBuilder = new StringBuilder();
for (int i = 0; i < end; i++) {
final char currentChar = source.charAt(i);
if (StringUtils.contains(ALLOWED_CHARS, currentChar)) {
filteredStringBuilder.append(currentChar);
}
}
return filteredStringBuilder.toString();
}
}
}