用java写一个关于edittext限制两位小数、edittext限制输入三位整数edittext输入格式为111.22的检验类
时间: 2023-12-10 08:40:48 浏览: 33
以下是一个Java类,用于限制EditText控件仅允许输入两位小数、三位整数以及111.22格式的文本:
```java
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
public class EditTextValidator {
/**
* 限制EditText控件仅允许输入两位小数
*
* @param editText 需要限制的EditText控件
*/
public static void limitTwoDecimal(final EditText editText) {
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
String temp = s.toString();
int posDot = temp.indexOf(".");
if (posDot < 0) return;
if (temp.length() - posDot - 1 > 2) {
s.delete(posDot + 3, posDot + 4);
}
}
});
}
/**
* 限制EditText控件仅允许输入三位整数
*
* @param editText 需要限制的EditText控件
*/
public static void limitThreeDigits(final EditText editText) {
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
String temp = s.toString();
if (temp.length() > 3) {
s.delete(3, temp.length());
}
}
});
}
/**
* 限制EditText控件仅允许输入111.22格式的文本
*
* @param editText 需要限制的EditText控件
*/
public static void limit111_22Format(final EditText editText) {
editText.addTextChangedListener(new TextWatcher() {
private boolean ignoreChange = false;
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (ignoreChange) {
return;
}
String temp = s.toString();
if (temp.equals("111.22")) {
return;
}
if (temp.length() > 6) {
s.replace(0, s.length(), "111.22");
return;
}
if (temp.length() == 6) {
if (!temp.equals("111.22")) {
s.replace(0, s.length(), "111.22");
}
return;
}
if (temp.length() == 3) {
if (temp.equals("111")) {
s.replace(0, s.length(), "111.");
} else {
s.insert(3, ".");
}
return;
}
if (temp.length() == 4) {
String subStr = temp.substring(temp.length() - 2);
if (subStr.equals(".0") || subStr.equals(".1") || subStr.equals(".2")) {
return;
} else {
ignoreChange = true;
s.replace(temp.length() - 1, temp.length(), "");
ignoreChange = false;
}
}
if (temp.length() == 5) {
String subStr = temp.substring(temp.length() - 2);
if (subStr.equals(".22")) {
return;
} else {
ignoreChange = true;
s.replace(temp.length() - 1, temp.length(), "");
ignoreChange = false;
}
}
}
});
}
}
```
使用方法:
```java
EditText editText1 = findViewById(R.id.edittext1);
EditText editText2 = findViewById(R.id.edittext2);
EditText editText3 = findViewById(R.id.edittext3);
// 限制输入两位小数
EditTextValidator.limitTwoDecimal(editText1);
// 限制输入三位整数
EditTextValidator.limitThreeDigits(editText2);
// 限制输入111.22格式的文本
EditTextValidator.limit111_22Format(editText3);
```
其中,R.id.edittext1、R.id.edittext2、R.id.edittext3为需要限制的EditText控件的ID。