我试图显示“,”而不是“。”在android软键盘中用于支持欧洲国家的十进制数字。我试图通过以编程方式设置键侦听器来添加小数点分隔符。但是当我尝试设置分隔符时,它显示的是“ .-”而不是“。”。
我怎么只显示点?
这就是我试图显示分隔符的方式。
char separator = DecimalFormatSymbols.getInstance().getDecimalSeparator();
mWeightEditText.setKeyListener(DigitsKeyListener.getInstance("0123456789" + separator));
答案 0 :(得分:0)
如果要使用“,”而不是“ .-”,则需要将editext的输入类型设置为
mWeightEditText.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_CLASS_NUMBER);
编辑 我忘了给你添加inputFilter
public static InputFilter[] setPriceFilters() {
return new InputFilter[]{new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
int digitsBeforeZero = 20;
int digitsAfterZero = 2;
String res = dest.toString().replace(" ", "");
if (res.isEmpty() && source.toString().equals(".")) {
return "";
} else if (res.contains(",") && source.toString().equals(".")) {
return "";
} else if (res.isEmpty() && source.toString().equals("0")){
return "";
}
Matcher matcher = Pattern.compile("[0-9]{0," + (digitsBeforeZero - 1) + "}+((\\,[0-9]{0," + (digitsAfterZero - 1) + "})?)?").matcher(res);
if (!matcher.matches())
return "";
return null;
}
}};
}
在我的版本中,我在清零之前和之后有一个数字,如果不需要,可以在匹配器上将其删除