要在EditText中添加一个范围,使输入在Android Studio中超出范围时以红色突出显示,可以通过使用InputFilter来实现。
InputFilter是一个接口,用于限制EditText中输入的内容。我们可以自定义一个InputFilter类,并重写其filter方法来实现范围限制和红色突出显示。
以下是一个示例代码:
import android.text.InputFilter;
import android.text.Spanned;
import android.graphics.Color;
public class RangeInputFilter implements InputFilter {
private int min;
private int max;
public RangeInputFilter(int min, int max) {
this.min = min;
this.max = max;
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
try {
// 将输入的文本转换为数字
int input = Integer.parseInt(dest.toString() + source.toString());
// 判断输入的数字是否在范围内
if (isInRange(input)) {
// 返回null表示输入有效
return null;
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
// 输入无效,设置文本颜色为红色
if (source.length() > 0) {
EditText editText = (EditText) findViewById(R.id.editText);
editText.setTextColor(Color.RED);
}
// 返回空字符串表示不接受输入
return "";
}
private boolean isInRange(int input) {
return input >= min && input <= max;
}
}
然后,在你的Activity或Fragment中,将该InputFilter应用到EditText上:
EditText editText = (EditText) findViewById(R.id.editText);
editText.setFilters(new InputFilter[]{new RangeInputFilter(0, 100)});
上述代码中,我们创建了一个RangeInputFilter类,它接受一个最小值和最大值作为参数。在filter方法中,我们将输入的文本转换为数字,并判断是否在范围内。如果超出范围,我们将EditText的文本颜色设置为红色,并返回空字符串表示不接受输入。
这样,当用户在EditText中输入超出范围的数字时,输入的文本将以红色突出显示。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云