如何在Android中仅为edittext设置数值?


209

我有一个edittext我只想插入整数值的地方。有人可以告诉我我必须使用哪个财产吗?

Answers:


403

我猜想android:inputType="number"XML属性。


11
伙计,我爱Android开发人员...在网页上如此大惊小怪地获得此选项!
亚历克斯(Alex)

14
嗨,在Android 2.3.3中,它是“ numberSigned”。只是在这里写下来,以防万一有人正在寻找它:)
柠檬汁

如果我的editText出现在对话框中,因此,我仅以.java代码声明该怎么办?即,对话框editText不会出现在XML文件中。我怎么仍然可以做到这一点?
2013年

1
另外,您可以android:inputType="phone"代替它。但是似乎有点“忙”。
乍得宾厄姆

126

例如:

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

3
这是最好的解决方案!
RRTW

2
我假设字符串应该读0123456789.而不是0123456780.
audiFanatic 2014年

这也适用于android:inputType =“ number”!我需要它,以防止用户在数字键盘上键入运算符,括号等。真是个救命的人!欢迎来到Costco;我爱你!
gonzobrains 2014年

2
这将不允许您放置负数,同时将允许重复的小数。(例如:1.1.1 .....)
Rushi Ayyappa

好的,添加android:digits还可以处理复制粘贴的情况。
StoneLam

107

在代码中,你可以做

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);

@MohamedKhamis,它是EditText的名称
KERiii

1
Sourabh要求“仅插入整数值”。这允许输入更多。
Zon

30

对于仅数字输入android:inputType="numberPassword",请与editText.setTransformationMethod(null);来删除自动隐藏。

要么

android:inputType="phone"

仅输入数字,我觉得这两种方式比 android:inputType="number"。在输入类型中提及“数字”的限制是键盘允许切换到字符,也可以输入其他特殊字符。“ numberPassword” inputType没有这些问题,因为键盘仅显示数字。甚至“电话” inputType都可以使用,因为键盘不允许您切换到字符。但是您仍然可以输入几个特殊字符,例如+,/,N等。

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

inputType =“ numberPassword”

inputType =“ phone”

inputType =“ phone”

inputType =“ number”

inputType =“ number”


1
太棒了!android:inputType="numberPassword"以及editText.setTransformationMethod(null);
coderpc '17

这个技巧使我的应用程序变得完美。
Kernelzero

6
android:inputType="numberDecimal"

5
这很棒,但是Integer数字系统不包含任何十进制数字。
RileyE

@RileyE这是什么意思?我们刚刚开始将其用于所有数字输入,并且我想确保我们没有丢失任何内容。谢谢!
约书亚·品特


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();
            }

2

如果有人只想使用0到9之间的数字并imeOptions启用,请在您的EditText

android:inputType =“ number | none”

这将只允许数字,如果您单击键盘的完成/下一步按钮,则焦点将移至下一个字段。


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);


0

我需要赶紧使用TextWatcher在键盘上按Enter键。但是我发现所有数字键盘android:inputType =“ number”或“ numberDecimal”或“ numberPassword”等均不允许我在用户按下Enter时捕获它们。

我尝试过android:digits="0123456789\n",所有数字键盘都开始与Enter和TextWatcher一起使用。

所以我的方法是:

android:digits="0123456789\n"
android:inputType="numberPassword"

editText.setTransformationMethod(null)

感谢barmaley和abhiank。


0

我不知道13年的正确答案是什么,但是今天是:

myEditText.setKeyListener(DigitsKeyListener.getInstance(null, false, true)); // positive decimal numbers

您将获得所有内容,包括屏幕键盘是数字小键盘。

几乎所有的东西。意式浓缩咖啡以其无穷的智慧让typeText("...")莫名其妙地绕过过滤器而进入垃圾...


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.