我希望在EditText字段中始终以两位小数显示输入内容。因此,当用户输入5时,它将显示为5.00,或者当用户输入7.5时,它将显示为7.50。
除此之外,我还希望在字段为空时显示零而不是什么都没有。
我已经设置了inputtype:
android:inputType="number|numberDecimal"/>
我应该在这里使用输入过滤器吗?
抱歉,我对Android/Java还很陌生...
谢谢你的帮助!
编辑 2011-07-09 23.35 - 解决了问题的一部分:将“”更改为0.00。
在nickfox的回答下,我解决了我的问题的一半。
et.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.toString().matches(""))
{
et.setText("0.00");
Selection.setSelection(et.getText(), 0, 4);
}
}
});
我仍在为我的问题的另一半寻找解决方案。如果我找到了解决方案,我也会在这里发布。
编辑 2011-07-09 23.35 - 解决了第二个问题: 将用户输入更改为带有两位小数的数字。
OnFocusChangeListener FocusChanged = new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus){
String userInput = et.getText().toString();
int dotPos = -1;
for (int i = 0; i < userInput.length(); i++) {
char c = userInput.charAt(i);
if (c == '.') {
dotPos = i;
}
}
if (dotPos == -1){
et.setText(userInput + ".00");
} else {
if ( userInput.length() - dotPos == 1 ) {
et.setText(userInput + "00");
} else if ( userInput.length() - dotPos == 2 ) {
et.setText(userInput + "0");
}
}
}
}
int dotPos = userInput.indexOf('.');
来替换你的 for 循环呢?indexOf() 方法甚至会在未找到字符时返回 -1。此外,之后你能不能使用 switch case 语句呢? - ArtOfWarfare