您可以在TextWatcher 的onTextChanged 方法中实现您的逻辑
editText.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start,
}
});
更新
对于开始你可以使用这样的东西:
editText.addTextChangedListener(new TextWatcher() {
boolean ignoreChange = false;
@Override
public void afterTextChanged(Editable s) {}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
if (!ignoreChange) {
String string = charSequence.toString();
String[] parts = string.split("\\.");
if (parts.length > 1) {
String digitsAfterPoint = parts[1];
if (digitsAfterPoint.length() > 1) {
ignoreChange = true;
editText.setText(string.substring(0, string.indexOf(".") + 2));
editText.setSelection(editText.getText().length());
ignoreChange = false;
}
}
}
}
});
但是你也应该控制“.”的重复。符号或其他东西。
更新 #2
例如,您可以使用该代码:
editText.addTextChangedListener(new TextWatcher() {
boolean ignoreChange = false;
String beforeChange;
@Override
public void afterTextChanged(Editable s) {}
@Override
public void beforeTextChanged(CharSequence charSequence, int start,
int count, int after) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
if (!ignoreChange) {
String string = charSequence.toString();
String[] parts = string.split("\\.");
if (parts.length > 1) {
String digitsAfterPoint = parts[1];
if (digitsAfterPoint.length() > 1) {
ignoreChange = true;
editText.setText(string.substring(0, string.indexOf(".") + 2));
editText.setSelection(editText.getText().length());
ignoreChange = false;
}
}
String strValue = editText.getText().toString();
float value = Float.valueOf(strValue);
if (value < 1 || value > 120) {
ignoreChange = true;
editText.setText(beforeChange);
editText.setSelection(editText.getText().length());
ignoreChange = false;
}
beforeChange = editText.getText().toString();
}
}
但是你应该携带正确的值输入。并为每个数字考虑NumberPicker 或Spinner。