EditText
是 Android 中的一个 UI 组件,用于接收用户输入的文本。默认情况下,EditText
允许用户输入任何字符。然而,有时我们需要限制用户只能输入数字,这时就需要对 EditText
进行特定的配置。
InputType
EditText editText = findViewById(R.id.editText);
editText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
TextWatcher
EditText editText = findViewById(R.id.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 text = s.toString();
if (text.matches("\\d*")) {
// 只允许数字
} else {
// 移除非数字字符
s.replace(0, s.length(), text.replaceAll("[^\\d]", ""));
}
}
});
InputType
还能输入非数字字符?原因:InputType
只能限制键盘显示的类型,但无法阻止用户通过粘贴或其他方式输入非数字字符。
解决方法:结合使用 TextWatcher
来实时监控和过滤输入内容。
解决方法:在 TextWatcher
的 afterTextChanged
方法中,确保删除操作不会导致异常。
@Override
public void afterTextChanged(Editable s) {
String text = s.toString();
if (text.matches("\\d*")) {
// 只允许数字
} else {
// 移除非数字字符
s.replace(0, s.length(), text.replaceAll("[^\\8]", ""));
}
}
通过上述方法,你可以有效地限制 EditText
只接受数字输入,从而提高应用的数据准确性和用户体验。
领取专属 10元无门槛券
手把手带您无忧上云