如何在 Android 中将 EditText 设置为仅接受数字值?
我有一个 EditText
,我只想在其中插入整数值。有人可以告诉我我必须使用哪个财产吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我有一个 EditText
,我只想在其中插入整数值。有人可以告诉我我必须使用哪个财产吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(14)
添加
android:inputType="number"
作为 XML 属性。Add
android:inputType="number"
as an XML attribute.例如:
For example:
在代码中,你可以这样做
In code, you could do
对于仅数字输入,请使用
android:inputType="numberPassword"
和editText.setTransformationMethod(null);
来删除数字的自动隐藏。或者
android:inputType="phone"
对于仅数字输入,我觉得这几种方法比
android:inputType="number"
更好。提及“数字”作为 inputType 的限制是键盘允许切换到字符并且还允许输入其他特殊字符。 “numberPassword”inputType 不存在这些问题,因为键盘仅显示数字。即使“电话”输入类型也可以工作,因为键盘不允许您切换到字符。但您仍然可以输入一些特殊字符,例如 +、/、N 等。android:inputType="numberPassword" 和 editText.setTransformationMethod(null);
inputType="phone"
inputType="number"
For only digits input use
android:inputType="numberPassword"
along witheditText.setTransformationMethod(null);
to remove auto-hiding of the number.OR
android:inputType="phone"
For only digits input, I feel these couple ways are better than
android:inputType="number"
. The limitation of mentioning "number" as inputType is that the keyboard allows to switch over to characters and also lets other special characters be entered. "numberPassword" inputType doesn't have those issues as the keyboard only shows digits. Even "phone" inputType works as the keyboard doesnt allow you to switch over to characters. But you can still enter couple special characters like +, /, N, etc.android:inputType="numberPassword" with editText.setTransformationMethod(null);
inputType="phone"
inputType="number"
尝试以下代码:
它将允许您仅输入数字。您不能输入字符。
如果您想输入字符而不是数字,您可以编辑
getInstance
内引号之间的值。Try the following code:
It will allow you to enter just numbers. You cannot enter chars.
if you want to enter chars, not numbers, you can edit the values between the quotes inside
getInstance
.如果有人想在启用
imeOptions
的情况下仅使用 0 到 9 的数字,请在EditText
中使用以下行这将只允许数字,如果您单击键盘的完成/下一个按钮,您的焦点将移至下一个字段。
If anyone want to use only number from 0 to 9 with
imeOptions
enable then use below line in yourEditText
This will only allow number and if you click on done/next button of keyboard your focus will move to next field.
使用以下可以更好地解决您的问题;
在 xml:
或 // 在 etfield.addtextchangelistener 内的活动中
using the below can solve your problem better;
in xml:
or //in activity inside etfield.addtextchangelistener
您可以在 XML 中使用它
,
或者,
您可以以编程方式使用
editText.setInputType(InputType.TYPE_CLASS_NUMBER);
You can use it in XML
or,
or,
Programmatically you can use
editText.setInputType(InputType.TYPE_CLASS_NUMBER);
我需要使用 TextWatcher 捕获键盘上的 Enter 键。但我发现所有数字键盘 android:inputType="number" 或 "numberDecimal" 或 "numberPassword" 等不允许我在用户按下 Enter 时捕获它。
我尝试了
android:digits="0123456789\n"
并且所有数字键盘都开始与 Enter 和 TextWatcher 一起使用。所以我的方法是:
加上
editText.setTransformationMethod(null)
感谢 barmaley 和 abhiank。
I need to catch pressing Enter on a keyboard with TextWatcher. But I found out that all numeric keyboards android:inputType="number" or "numberDecimal" or "numberPassword" e.t.c. don't allow me to catch Enter when user press it.
I tried
android:digits="0123456789\n"
and all numeric keyboards started to work with Enter and TextWatcher.So my way is:
plus
editText.setTransformationMethod(null)
Thanks to barmaley and abhiank.
我不知道 13 年的正确答案是什么,但今天是:
myEditText.setKeyListener(DigitsKeyListener.getInstance(null, false, true)); // 正十进制数
你得到了一切,包括屏幕键盘是数字小键盘。
几乎一切。 Espresso 以其无穷的智慧,让
typeText("...")
莫名其妙地绕过了过滤器,进入了垃圾……I don't know what the correct answer was in '13, but today it is:
myEditText.setKeyListener(DigitsKeyListener.getInstance(null, false, true)); // positive decimal numbers
You get everything, including the onscreen keyboard is a numeric keypad.
ALMOST everything. Espresso, in its infinite wisdom, lets
typeText("...")
inexplicably bypass the filter and enter garbage...要强制使用数字键盘来访问适合区域设置的小数分隔符,您可以使用以下代码,
EditText 将始终显示可以访问适合区域设置的小数分隔符的数字键盘。
To enforce a numeric keyboard WITH access to a decimal separator that is appropriate for the locale, you can use below code
the EditText will always display a numeric keyboard with access to a decimal separator that is appropriate for the locale.
对我来说最简单,
虽然这也更定制
the simplest for me
although this also more customize