Android:强制使用小数文本中的点而不是逗号

Android:强制使用小数文本中的点而不是逗号,android,android-edittext,keyboard,locale,Android,Android Edittext,Keyboard,Locale,我怎样才能强制使用小数文本中的点而不是逗号 String.replace(“,”,“)对我来说不是有效的解决方案 我想用编程的方式设置US语言环境,但它也改变了语言 有没有一种方法可以在不更改语言的情况下更改区域设置?对于不同的区域设置,可以使用以下方法 private void localeDecimalInput(final EditText editText){ DecimalFormat decFormat = (DecimalFormat) DecimalFormat.get

我怎样才能强制使用小数文本中的点而不是逗号

String.replace(“,”,“)对我来说不是有效的解决方案

我想用编程的方式设置US语言环境,但它也改变了语言


有没有一种方法可以在不更改语言的情况下更改区域设置?

对于不同的区域设置,可以使用以下方法

private void localeDecimalInput(final EditText editText){

    DecimalFormat decFormat = (DecimalFormat) DecimalFormat.getInstance(Locale.getDefault());
    DecimalFormatSymbols symbols=decFormat.getDecimalFormatSymbols();
    final String defaultSeperator=Character.toString(symbols.getDecimalSeparator());

    editText.addTextChangedListener(new TextWatcher() {

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

        }

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

        }

        @Override
        public void afterTextChanged(Editable editable) {
            if(editable.toString().contains(defaultSeperator))
                editText.setKeyListener(DigitsKeyListener.getInstance("0123456789"));
            else
                editText.setKeyListener(DigitsKeyListener.getInstance("0123456789" + defaultSeperator));
        }


});
}
解决方案2
EditText
android:inputType=“numberDecimal”
android:digits=“0123456789.,”
一起使用

然后将
TextChangedListener
添加到
EditText
中,并使用以下
postertextchanged

public void afterTextChanged(Editable s) {
    double doubleValue = 0;
    if (s != null) {
        try {
            doubleValue = Double.parseDouble(s.toString().replace(',', '.'));
        } catch (NumberFormatException e) {
            //Error
        }
    }
    //Do something with doubleValue
}