0
在我的edittext中,我設置了TextWatcher。我希望它自動設置千分隔符。在Android中設置千分隔符EditText無法正常工作
getDoubleValue用於獲取我的EditText的值,而點(在德國,千分隔符是「」)
如果一些文字改變了,我得到的編輯從EditText上,取出監聽器防止循環,獲取doubleValue,清除可編輯的值並用千分隔符設置值。 但只有最後一點是可見的。 如果我使用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