【问题标题】:"," is showing as " .-" in android soft keyboard"," 在 android 软键盘中显示为 ".-"
【发布时间】:2020-04-08 16:00:22
【问题描述】:

我试图显示“,”而不是“。”在 android 软键盘中支持欧洲国家的十进制数字。我尝试通过以编程方式设置键侦听器来添加小数点分隔符。但是当我尝试设置分隔符时,它显示的是“.-”而不是“.”。

如何只显示点?

这就是我尝试显示分隔符的方式。

char separator = DecimalFormatSymbols.getInstance().getDecimalSeparator();
mWeightEditText.setKeyListener(DigitsKeyListener.getInstance("0123456789" + separator));     

【问题讨论】:

标签: android


【解决方案1】:

如果您想使用“,”而不是“.-”,则需要将 editext 的输入类型设置为

mWeightEditText.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_CLASS_NUMBER);

编辑 我忘了给你加输入过滤器

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;
        }
    }};
}

在我的版本中,我在零校验前后都有一个数字,如果不需要,可以在匹配器上删除它

【讨论】:

  • 我已经设置了相同的,但它不起作用。 mWeightEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL); mWeightEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(inputLength)});
  • 我已经编辑了我的答案,告诉我这是否适合你这样使用:mWeightEditText.setFilters(setPriceFilters());
猜你喜欢
  • 2013-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多