在Androids EditText中设置千位分隔符无法正常工作

时间:2014-04-11 11:22:13

标签: android android-edittext textwatcher

在我的edittext中,我在其上设置了TextWatcher。我想让它自动设置千位分离器。

getDoubleValue用于获取没有点的我的EditText的值(在德国,千分隔符是'。')

如果某些Text发生了变化,我从EditText中获取editable,删除Listener以防止循环,获取doubleValue,清除editable并使用thousandseparator设置值。 但只有最后一点是可见的。 如果我使用setText()代替它,它可以工作,但速度很慢。

this.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            Log.d("debug", "ontextchanged");
            Editable edit = getText();

            InputField.this.removeTextChangedListener(this);
            String ausg = NumberFormat.getInstance(Locale.GERMAN).format(
                    getDoubleValue());
            edit.clear();
            Log.d("debug", ausg);
            edit.append(ausg);
            Log.d("debug", getText().toString());
            InputField.this.addTextChangedListener(this);

        }

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


        }

        @Override
        public void afterTextChanged(Editable s) {


        }
    });

public double getDoubleValue() {
    Log.d("debug", "getDoubleValue");
    try {
        return Double.parseDouble(getText().toString()
                .replaceAll("\\.", ""));
    } catch (Exception e) {
        Log.e("debug", e.toString());
        return 0;
    }
}

我的Logcat输出: LogCatOutput as screenshot

enter image description here

1 个答案:

答案 0 :(得分:0)

我将inputtype设置为DecimalNumber,因此edittext只允许一个点。诀窍是删除inputtype。