Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android的EditText十进制掩码_Java_Android_Android Edittext_Masking - Fatal编程技术网

Java android的EditText十进制掩码

Java android的EditText十进制掩码,java,android,android-edittext,masking,Java,Android,Android Edittext,Masking,我在Android应用程序中工作,我想在Android中为editText创建一个十进制掩码。我想要一个像maskMoney jQuery插件一样的掩码。但在某些情况下,我的数字将有2位小数、3位小数或是整数。我想这样做: 创建EditText时,附带一个默认值:00.01 如果用户按数字2,结果应为:00.12 如果用户按数字3,结果应为:01.23 如果用户按数字4,结果应为:12.34 如果用户按数字5,结果应为:123.45 如果用户按数字6,结果应为:1234.56 最好的方法是什

我在Android应用程序中工作,我想在Android中为editText创建一个十进制掩码。我想要一个像maskMoney jQuery插件一样的掩码。但在某些情况下,我的数字将有2位小数、3位小数或是整数。我想这样做:

  • 创建EditText时,附带一个默认值:00.01
  • 如果用户按数字2,结果应为:00.12
  • 如果用户按数字3,结果应为:01.23
  • 如果用户按数字4,结果应为:12.34
  • 如果用户按数字5,结果应为:123.45
  • 如果用户按数字6,结果应为:1234.56
最好的方法是什么?

我决定:

public static TextWatcher amount(final EditText editText, final String metric) {
    return new TextWatcher() {
        String current = "";

        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (!s.toString().equals(current)) {
                editText.removeTextChangedListener(this);

                String cleanString = s.toString();

                if (count != 0) {
                    String substr = cleanString.substring(cleanString.length() - 2);

                    if (substr.contains(".") || substr.contains(",")) {
                        cleanString += "0";
                    }
                }

                cleanString = cleanString.replaceAll("[,.]", "");

                double parsed = Double.parseDouble(cleanString);
                DecimalFormat df = new DecimalFormat("0.00");
                String formatted = df.format((parsed / 100));

                current = formatted;
                editText.setText(formatted);
                editText.setSelection(formatted.length());

                editText.addTextChangedListener(this);
            }
        }

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

        public void afterTextChanged(Editable s) {}
    };
}
我决定:

public static TextWatcher amount(final EditText editText, final String metric) {
    return new TextWatcher() {
        String current = "";

        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (!s.toString().equals(current)) {
                editText.removeTextChangedListener(this);

                String cleanString = s.toString();

                if (count != 0) {
                    String substr = cleanString.substring(cleanString.length() - 2);

                    if (substr.contains(".") || substr.contains(",")) {
                        cleanString += "0";
                    }
                }

                cleanString = cleanString.replaceAll("[,.]", "");

                double parsed = Double.parseDouble(cleanString);
                DecimalFormat df = new DecimalFormat("0.00");
                String formatted = df.format((parsed / 100));

                current = formatted;
                editText.setText(formatted);
                editText.setSelection(formatted.length());

                editText.addTextChangedListener(this);
            }
        }

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

        public void afterTextChanged(Editable s) {}
    };
}

您是否尝试过使用
NumberFormat
?请参阅此处的讨论-您是否尝试过使用
NumberFormat
?请参阅此处的讨论-