在我的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
答案 0 :(得分:0)
我将inputtype设置为DecimalNumber,因此edittext只允许一个点。诀窍是删除inputtype。