我有一个editText,起始值为$ 0.00。当您按数字1时,它将变为$ 0.01。按4,则变为$ 0.14。按8,$ 1.48。按退格键,$ 0.14等。
可行,问题是,如果有人手动定位光标,则格式化会出现问题。如果他们要删除小数,它将不会返回。如果他们将光标放在小数点前面并键入2,它将显示$ 02.00而不是$ 2.00。例如,如果他们尝试删除$,它将删除一个数字。
这是我正在使用的代码,我将不胜感激任何建议。
mEditPrice.setRawInputType(Configuration.KEYBOARD_12KEY);
public void priceClick(View view) {
mEditPrice.addTextChangedListener(new TextWatcher(){
DecimalFormat dec = new DecimalFormat("0.00");
@Override
public void afterTextChanged(Editable arg0) {
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
if(!s.toString().matches("^\\$(\\d{1,3}(\\,\\d{3})*|(\\d+))(\\.\\d{2})?$"))
{
String userInput= ""+s.toString().replaceAll("[^\\d]", "");
if (userInput.length() > 0) {
Float in=Float.parseFloat(userInput);
float percen = in/100;
mEditPrice.setText("$"+dec.format(percen));
mEditPrice.setSelection(mEditPrice.getText().length());
}
}
}
});
鸿蒙传说
qq_花开花谢_0
相关分类