如何在 Android 中将 EditText 设置为仅接受数字值?

发布于 2024-10-11 02:10:37 字数 64 浏览 3 评论 0 原文

我有一个 EditText,我只想在其中插入整数值。有人可以告诉我我必须使用哪个财产吗?

I have an EditText in which I want only integer values to be inserted. Can somebody tell me which property I have to use?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(14

假装爱人 2024-10-18 02:10:37

添加 android:inputType="number" 作为 XML 属性。

Add android:inputType="number" as an XML attribute.

暗地喜欢 2024-10-18 02:10:37

例如:

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

For example:

<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>
时光倒影 2024-10-18 02:10:37

在代码中,你可以这样做

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);

In code, you could do

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);
郁金香雨 2024-10-18 02:10:37

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

或者

android:inputType="phone"

对于仅数字输入,我觉得这几种方法比 android:inputType="number" 更好。提及“数字”作为 inputType 的限制是键盘允许切换到字符并且还允许输入其他特殊字符。 “numberPassword”inputType 不存在这些问题,因为键盘仅显示数字。即使“电话”输入类型也可以工作,因为键盘不允许您切换到字符。但您仍然可以输入一些特殊字符,例如 +、/、N 等。

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

inputType=

inputType="phone"

inputType=

inputType="number"

inputType=

For only digits input use android:inputType="numberPassword" along with editText.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="numberPassword"

inputType="phone"

inputType="phone"

inputType="number"

inputType="number"

注定孤独终老 2024-10-18 02:10:37
android:inputType="numberDecimal"
android:inputType="numberDecimal"
苏大泽ㄣ 2024-10-18 02:10:37
<EditText
android:id="@+id/age"
android:numeric="integer" 
/>
<EditText
android:id="@+id/age"
android:numeric="integer" 
/>
别在捏我脸啦 2024-10-18 02:10:37

尝试以下代码:

Edittext_name.setKeyListener(DigitsKeyListener.getInstance("0123456789"));

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

Try the following code:

Edittext_name.setKeyListener(DigitsKeyListener.getInstance("0123456789"));

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.

轮廓§ 2024-10-18 02:10:37

如果有人想在启用 imeOptions 的情况下仅使用 0 到 9 的数字,请在 EditText 中使用以下行

android:inputType="number|none"

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

If anyone want to use only number from 0 to 9 with imeOptions enable then use below line in your EditText

android:inputType="number|none"

This will only allow number and if you click on done/next button of keyboard your focus will move to next field.

简美 2024-10-18 02:10:37

使用以下可以更好地解决您的问题;

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

using the below can solve your problem better;

in xml:

<EditText
      android:id="@+id/age"
      android:inputType="numberDecimal|numberSigned"        />

or //in activity inside 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();
            }
野鹿林 2024-10-18 02:10:37

您可以在 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);

You can use it in XML

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

or,

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

or,

android:inputType="phone"

Programmatically you can use
editText.setInputType(InputType.TYPE_CLASS_NUMBER);

极致的悲 2024-10-18 02:10:37

我需要使用 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。

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:

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

plus editText.setTransformationMethod(null)

Thanks to barmaley and abhiank.

相守太难 2024-10-18 02:10:37

我不知道 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...

芸娘子的小脾气 2024-10-18 02:10:37

要强制使用数字键盘来访问适合区域设置的小数分隔符,您可以使用以下代码,

Locale locale = Locale.getDefault();
DecimalFormat decimalFormat = new DecimalFormat(locale);
String digits = decimalFormat.toLocaleString("#,###");

EditText editText = findViewById(R.id.edit_text);
editText.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
editText.setKeyListener(DigitsKeyListener.getInstance(digits));

EditText 将始终显示可以访问适合区域设置的小数分隔符的数字键盘。

To enforce a numeric keyboard WITH access to a decimal separator that is appropriate for the locale, you can use below code

Locale locale = Locale.getDefault();
DecimalFormat decimalFormat = new DecimalFormat(locale);
String digits = decimalFormat.toLocaleString("#,###");

EditText editText = findViewById(R.id.edit_text);
editText.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
editText.setKeyListener(DigitsKeyListener.getInstance(digits));

the EditText will always display a numeric keyboard with access to a decimal separator that is appropriate for the locale.

自由范儿 2024-10-18 02:10:37

对我来说最简单,

android:numeric="integer" 

虽然这也更定制

android:digits="0123456789"

the simplest for me

android:numeric="integer" 

although this also more customize

android:digits="0123456789"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文