为了账号安全,请及时绑定邮箱和手机立即绑定

在EditText中使用numberDecimal inputType的十进制分隔符逗号(',')

在EditText中使用numberDecimal inputType的十进制分隔符逗号(',')

杨__羊羊 2019-11-27 10:55:52
输入inputType numberDecimal中EditText使用点“。”。作为小数点分隔符。在欧洲,通常使用逗号','代替。即使我的语言环境设置为德语,小数点分隔符仍为“。”。有没有办法将逗号作为小数点分隔符?
查看完整描述

3 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

此处提供的“数字”解决方案的一种变体:


char separator = DecimalFormatSymbols.getInstance().getDecimalSeparator();

input.setKeyListener(DigitsKeyListener.getInstance("0123456789" + separator));

考虑到语言环境分隔符。


查看完整回答
反对 回复 2019-11-27
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

EditText的以下代码货币掩码($ 123,125.155)


Xml布局


  <EditText

    android:inputType="numberDecimal"

    android:layout_height="wrap_content"

    android:layout_width="200dp"

    android:digits="0123456789.,$" />


EditText testFilter=...

testFilter.addTextChangedListener( new TextWatcher() {

        boolean isEdiging;

        @Override public void onTextChanged(CharSequence s, int start, int before, int count) { }

        @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { }


        @Override public void afterTextChanged(Editable s) {

            if(isEdiging) return;

            isEdiging = true;


            String str = s.toString().replaceAll( "[^\\d]", "" );

            double s1 = Double.parseDouble(str);


            NumberFormat nf2 = NumberFormat.getInstance(Locale.ENGLISH);

            ((DecimalFormat)nf2).applyPattern("$ ###,###.###");

            s.replace(0, s.length(), nf2.format(s1));


            isEdiging = false;

        }

    });


查看完整回答
反对 回复 2019-11-27
  • 3 回答
  • 0 关注
  • 5466 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信