返回
Android 最简单的限制输入方式之一
Android
2023-11-26 03:01:49
在 Android 中,限制输入最简单的方法之一是使用 InputFilter 类。InputFilter 提供了一个接口,用于过滤用户在 EditText 中输入的文本。我们可以通过重写 InputFilter.filterText() 方法来实现我们自己的过滤规则。例如,以下代码可以用来限制 EditText 中只能输入数字:
InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (source.equals("")) { // 删除操作
return null;
}
if (!Pattern.matches("[0-9]", source.toString())) { // 只允许输入数字
return "";
}
return null;
}
};
然后,我们可以将这个 InputFilter 添加到 EditText 中:
EditText editText = (EditText) findViewById(R.id.edit_text);
editText.setFilters(new InputFilter[] {filter});
这样,当用户在 EditText 中输入非数字的字符时,这些字符将被过滤掉。
另一种限制输入的方法是使用 TextWatcher 类。TextWatcher 提供了一个接口,用于监听 EditText 中的文本变化。我们可以通过重写 TextWatcher.onTextChanged() 方法来实现我们自己的过滤规则。例如,以下代码可以用来限制 EditText 中只能输入数字:
TextWatcher watcher = 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) {
String text = s.toString();
if (!Pattern.matches("[0-9]", text)) { // 只允许输入数字
editText.setText(text.replaceAll("[^0-9]", ""));
}
}
@Override
public void afterTextChanged(Editable s) {
}
};
然后,我们可以将这个 TextWatcher 添加到 EditText 中:
EditText editText = (EditText) findViewById(R.id.edit_text);
editText.addTextChangedListener(watcher);
这样,当用户在 EditText 中输入非数字的字符时,这些字符将被自动替换成数字。
以上就是两种简单的方法来限制 Android 中的输入。我们可以根据自己的需要选择使用哪种方法。