Мне не нравится другое решение, и я создал свой собственный. С помощью этого решения вы не можете ввести больше, чем MAX_BEFORE_POINT, перед точкой, а десятичные значения не могут быть больше MAX_DECIMAL.
Вы просто не можете ввести цифру в избытке, никаких других эффектов! В дополнение, если вы пишете «.». он набирает «0».
EditText targetEditText = (EditText)findViewById(R.id.targetEditTextLayoutId);
targetEditText.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
public void afterTextChanged(Editable arg0) {
String str = targetEditText.getText().toString();
if (str.isEmpty()) return;
String str2 = PerfectDecimal(str, 3, 2);
if (!str2.equals(str)) {
targetEditText.setText(str2);
int pos = targetEditText.getText().length();
targetEditText.setSelection(pos);
}
}
});
public String PerfectDecimal(String str, int MAX_BEFORE_POINT, int MAX_DECIMAL){
if(str.charAt(0) == '.') str = "0"+str;
int max = str.length();
String rFinal = "";
boolean after = false;
int i = 0, up = 0, decimal = 0; char t;
while(i < max){
t = str.charAt(i);
if(t != '.' && after == false){
up++;
if(up > MAX_BEFORE_POINT) return rFinal;
}else if(t == '.'){
after = true;
}else{
decimal++;
if(decimal > MAX_DECIMAL)
return rFinal;
}
rFinal = rFinal + t;
i++;
}return rFinal;
}
И все сделано!
выпуск октября 2008 Электроинструментов TFS включает функциональность "Членов команды", которая позволяет Вам делать это, и т.д.
существует больше информации об этой функции на блог .
Brian HarryЯ обычно использую TFS SideKicks для этого.