【问题标题】:How do you set EditText to only accept numeric values in Android?您如何将 EditText 设置为仅接受 Android 中的数值?
【发布时间】:2011-06-06 10:01:55
【问题描述】:

我有一个EditText,我只想在其中插入整数值。谁能告诉我我必须使用哪个属性?

【问题讨论】:

标签: android android-edittext


【解决方案1】:

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

【讨论】:

  • 伙计,我喜欢 Android 开发者...在网页中获得这个选项真是大惊小怪!
  • 嗨,在 android 2.3.3 中,它是“numberSigned”。把它写在这里,以防有人正在寻找它:)
  • 如果我的editText出现在对话框中,我只在.java代码中声明它怎么办?即对话框 editText 不会出现在 XML 文件中。我怎样才能做到这一点?
  • 另外,您可以使用android:inputType="phone" 代替它。但似乎更“忙”了一点。
【解决方案2】:

例如:

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

【讨论】:

  • 这是最好的解决方案!
  • 我假设字符串应该是 0123456789. 而不是 0123456780.
  • 这也适用于 android:inputType="number" !我需要它以防止用户在数字键盘上键入运算符、括号等。多么救命啊,伙计!欢迎来到好市多;我爱你!
  • 这将不允许您输入负数,同时它会允许重复的小数。(例如:1.1.1.....)
  • 很好,添加 android:digits 也可以处理复制粘贴的情况。
【解决方案3】:

在代码中,你可以这样做

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);

【讨论】:

  • @MohamedKhamis 这是 EditText 的名称
  • Sourabh 要求“仅插入整数值”。这允许输入更多内容。
【解决方案4】:
android:inputType="numberDecimal"

【讨论】:

  • 这很好,但整数系统不包括任何十进制数。
  • @RileyE 你这是什么意思?我们刚刚开始将它用于我们所有的数字输入,我想确保我们没有遗漏任何东西。谢谢!
  • 问题显示为“数字”,但问题文本显示为“整数”
【解决方案5】:
<EditText
android:id="@+id/age"
android:numeric="integer" 
/>

【讨论】:

【解决方案6】:

对我来说最简单

android:numeric="integer" 

虽然这也更加个性化

android:digits="0123456789"

【讨论】:

【解决方案7】:

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

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

【讨论】:

    【解决方案8】:

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

    android:inputType="number|none"

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

    【讨论】:

      【解决方案9】:

      对于仅数字输入,请使用 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"

      【讨论】:

      • 这太完美了! android:inputType="numberPassword"editText.setTransformationMethod(null);
      • 这个技巧让我的应用变得完美。
      【解决方案10】:

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

      【讨论】:

        【解决方案11】:

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

        【讨论】:

          【解决方案12】:

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

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

          你得到了一切,包括屏幕键盘是一个数字小键盘。

          几乎所有东西。 Espresso,以其无限的智慧,让typeText("...")莫名其妙地绕过过滤器进入垃圾……

          【讨论】:

          • @RequiresApi(Build.VERSION_CODES.O)
          • 点。我在.Q,因为我们的项目不是大众市场
          【解决方案13】:

          试试下面的代码:

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

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

          【讨论】:

            猜你喜欢
            • 2012-11-28
            • 2012-05-07
            • 2012-11-05
            • 2014-03-10
            • 2011-01-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-04-10
            相关资源
            最近更新 更多