如何在Android中设置EditText只接受数字值?

225

我有一个 EditText,我只想插入整数值。 有人可以告诉我我需要使用哪个属性吗?


1
请查看此链接:https://dev59.com/V2Yr5IYBdhLWcg3wQYJa#70189238 - Mori
Mori的评论是这里最好的答案。你考虑用它来回答这个问题了吗,@Mori? - Chucky
14个回答

422

13
我喜欢 Android 开发,但在网页中获取此选项很麻烦! - Alex
14
嗨,在Android 2.3.3中,它是“numberSigned”。只是在这里写下来,以防有人正在寻找它 :) - PeakGen
1
如果我的editText出现在对话框中,因此我只在.java代码中声明它,即对话框editText未显示在XML文件中,我如何实现这一点? - Sibbs Gambling
1
此外,您可以使用android:inputType="phone"代替它。但是这似乎有点过于繁琐。 - Chad Bingham

134
例如:
<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>

3
这是最好的解决方案! - RRTW
2
我假设字符串应该是 0123456789. 而不是 0123456780. - audiFanatic
这也适用于android:inputType="number"!我需要它来防止用户在数字键盘上输入运算符、括号等。太棒了,真是救命稻草啊!欢迎来到Costco;我爱你! - gonzobrains
2
这将不允许您输入负数,同时允许重复小数点(例如:1.1.1.....)。 - Rushi Ayyappa
1
很好,添加 android:digits 也会处理复制和粘贴情况。 - StoneLam
嘿,我需要允许数字之间有逗号。你猜怎么着?digits="0123456789," 就可以了! - nat101

111

在代码中,你可以这样做

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);

@MohamedKhamis 这是 EditText 的名称。 - daniel.keresztes
1
Sourabh要求“只能插入整数值”。这样可以输入更多的内容。 - Zon

42

如果只输入数字,请使用android:inputType="numberPassword",以及editText.setTransformationMethod(null);来移除数字的自动隐藏。

或者

android:inputType="phone"

对于仅输入数字,我认为这几种方法比android:inputType="number"更好。将"number"作为inputType的限制是键盘允许切换到字符,并且还可以输入其他特殊字符。"numberPassword" inputType没有这些问题,因为键盘只显示数字。即使"phone" inputType也可以正常工作,因为键盘不允许您切换到字符。但是您仍然可以输入一些特殊字符,例如+、/、N等。

android:inputType="numberPassword"editText.setTransformationMethod(null);

inputType="numberPassword"

inputType="phone"

inputType="phone"

inputType="number"

inputType="number"


2
这太完美了!android:inputType="numberPassword"editText.setTransformationMethod(null); 一起使用。 - coderpc
这个提示让我的应用程序变得完美。 - Kernelzero

6
android:inputType="numberDecimal"

5
很好,但整数数字系统不包括任何小数。 - RileyE
@RileyE,你是什么意思?我们刚开始将其用于所有数字输入,我想确保我们没有遗漏任何东西。谢谢! - Joshua Pinter
问题中说“数字”,但问题文本中说“整数”。 - user10186832

4
<EditText
android:id="@+id/age"
android:numeric="integer" 
/>

3
android:numeric在API 3已被弃用,详情请参考http://stackoverflow.com/questions/12625380/difference-among-edittext-androidnumeric-decimal-and-androidinputtype-numbe - winne2

3
如果想要在启用了 "imeOptions" 的情况下仅使用数字 0 到 9,请在您的 EditText 中使用以下行:

android:inputType="number|none"

这将只允许输入数字,如果您点击键盘上的完成/下一个按钮,则焦点将移动到下一个字段。

3
请尝试以下代码:
Edittext_name.setKeyListener(DigitsKeyListener.getInstance("0123456789"));

它将允许您仅输入数字,无法输入字符。 如果您想输入字符而不是数字,则可以在getInstance内编辑引号之间的值。


2
使用以下内容可以更好地解决您的问题:
在 XML 中:
<EditText
      android:id="@+id/age"
      android:inputType="numberDecimal|numberSigned"        />

或者 //在etfield.addtextchangelistener内的活动
     private String blockCharacterSet="+(/)N,*;#";//declare globally
               try {
                for (int i = 0; i < s.length(); i++) {


                    if (blockCharacterSet.contains(s.charAt(i) + "")) {

                        String corrected_settempvalue = arrivalsettemp.substring(0, arrivalsettemp.length() - 1);
                        et_ArrivalSetTemp.setText(corrected_settempvalue);
                        if (corrected_settempvalue.length() != 0)
                            et_ArrivalSetTemp.setSelection(corrected_settempvalue.length());

                    }
                }
            } catch (Exception d) {
                d.printStackTrace();
            }

0

你可以在XML中使用它

<EditText
 android:id="@+id/myNumber"
 android:digits="123"
 android:inputType="number"
/>

或者,

android:inputType="numberPassword" along with editText.setTransformationMethod(null); to remove auto-hiding of the number.

或者,

android:inputType="phone"

在编程中,您可以使用
editText.setInputType(InputType.TYPE_CLASS_NUMBER);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接