有没有什么办法来定义Android的一个最小和最大价值的EditText? [英] Is there any way to define a min and max value for edittext in android?
问题描述
我要定义一个最小和最大的价值一个EditText。例如,如果任何人试图进入一个月份值必须是1-12之间,你知道的。我想限制该值
I want to define a min and max value for an edittext. For example if any person try to enter a month value it must be between 1-12 as you know. I want to limit this value.
我可以用TextWatcher做,但我想学习,有没有办法做到这一点在布局文件或者等除外TextWatcher?
I can do it by using TextWatcher but I want to learn, is there any way to do it in layout file or etc except TextWatcher?
编辑: 我不希望限制字符数。我想限制的值。举例来说,如果我限制了一个月的EditTextW¯¯人物,当我输入12它会接受它,但如果我输入22它不能接受它,而我进入。
I don't want to limit character count. I want to limit the value. For example, if I limit month edittext w characters when I enter 12 it will accept it but if I enter 22 it mustn't accept it while I am entering.
谢谢大家。 问候。
推荐答案
首先使这个类:
package com.test;
import android.text.InputFilter;
import android.text.Spanned;
public class InputFilterMinMax implements InputFilter {
private int min, max;
public InputFilterMinMax(int min, int max) {
this.min = min;
this.max = max;
}
public InputFilterMinMax(String min, String max) {
this.min = Integer.parseInt(min);
this.max = Integer.parseInt(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(min, max, input))
return null;
} catch (NumberFormatException nfe) { }
return "";
}
private boolean isInRange(int a, int b, int c) {
return b > a ? c >= a && c <= b : c >= b && c <= a;
}
}
,然后使用这个从你的活动:
Then use this from your Activity :
EditText et = (EditText) findViewById(R.id.myEditText);
et.setFilters(new InputFilter[]{ new InputFilterMinMax("1", "12")});
这将允许用户输入从1值12仅
编辑:
设置您的EditText与安卓inputType =号
Set your edittext with android:inputType="number"
.
感谢。
这篇关于有没有什么办法来定义Android的一个最小和最大价值的EditText?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!