我需要格式化EditText
以添加点。
如果输入的数字超过3个,请在第一个数字后加点(如:1.000)
但是当输入有超过4个数字时,将点放在第二个数字后面(如:10.000)
我已经尝试addTextChangedListener
,但它没有用。
答案 0 :(得分:0)
此算法用于在末尾添加数字并移动点,如下一个示例所示:
你有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());
}
}
});
我希望能帮助你。