java Android仅将EditText限制为整数输入
我试图对编辑文本进行某种验证。用户只能输入1到60之间的整数。我想知道我是否应该让他们键入他们喜欢的内容,当他们不关注edittext时,检查内容,如果超出范围,则将值更改为默认值,例如0
或者有没有办法限制键盘只允许整数
更新: 我以编程的方式做每件事。到目前为止,我已经能够通过实现以下操作,将输入限制为仅数字,并且最多有2个字符。不过,我仍在努力将值限制在0到60之间
editText.setInputType( InputType.TYPE_CLASS_NUMBER );
InputFilter[] FilterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(2);
editText.setFilters(FilterArray);
# 1 楼答案
如果你只限于数字,你可以使用
获取输入的值并验证其不超过60
通过添加,您可以轻松地只允许数字
android:numeric="integer"
到布局xml文件中的EditText
尽管值得一提的是
android:numeric="integer"
现在已经被弃用了# 2 楼答案
你可以使用
android.text.method.KeyListener
来替换当前的输入由于不必更改所有键,因此可以使用如下
addTextChangedListener(TextWatcher watcher)
方法:利用它来检查你的输入是否超出了你所看到的范围,你甚至可以通过检查这个循环来忽略关键点
在XML中:
android:inputType="number"
李># 3 楼答案
我明白了!我一直在网上搜寻,把一些东西放在一起,让它发挥作用。 基本上,它所做的是运行一个并行进程,当用户关注特定的文本框时,该进程将持续运行。它将设置一个过滤器,以便用户只能在第一个整数槽中输入0-5,但允许在第二个整数槽中输入0-9。这显然会给出0-59而不是1-60,但无论如何,这就是你想要的秒数。 这段代码位于类中onCreate方法之前:
然后,在
onCreate
方法中:正如我在第一部分中所说,这将使得用户只能在编辑文本框中输入00到59之间的数字。我知道它可能看起来有点邋遢,在一些if语句中可能会被清理一点,但据我所知,它工作得绝对完美,似乎根本不会减慢系统的速度。希望这能帮助你,如果不能的话,还有未来的谷歌人