我需要格式化一个EditText
来添加一个点。
当输入的数字超过 3 个时,将点放在第一个数字之后(例如:1.000)
但是当输入的数字超过 4 个时,将点放在第二个数字之后(例如:10.000)
我已经尝试过addTextChangedListener
了,但是没有用。
我需要格式化一个EditText
来添加一个点。
当输入的数字超过 3 个时,将点放在第一个数字之后(例如:1.000)
但是当输入的数字超过 4 个时,将点放在第二个数字之后(例如:10.000)
我已经尝试过addTextChangedListener
了,但是没有用。
该算法用于在末尾添加数字并移动点,如下例所示:
你在开始时有 0.00 插入 1 并且有 0.01 插入 5 并且有 0.15 插入 9 并且有 1.59
尝试修改该代码并使其适应您的需要。
youtEditText.addTextChangedListener( new TextWatcher() {
boolean mEditing = false;
public void onTextChanged(CharSequence s, int start, int before, int count) { }
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
public void afterTextChanged(Editable s) {
if(!mEditing) {
mEditing = true;
String digits = s.toString().replaceAll("\\D", "");
NumberFormat nf = new DecimalFormat( "#,##0.00" );
try{
String formatted = nf.format(Double.parseDouble(digits)/100);
s.replace(0, s.length(), formatted);
} catch (NumberFormatException nfe) {
s.clear();
}
mEditing = false;
}
}
});
另一件事是您需要将焦点放在文本的末尾,您可以使用以下代码来做到这一点:
yourEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
amount.setSelection(amount.getText().length());
}
}
});
我希望这可以帮助你。