【问题标题】:How to force EditText to accept only numbers?如何强制 EditText 只接受数字?
【发布时间】:2012-03-09 05:03:29
【问题描述】:

如何强制 EditText 只接受数字?

【问题讨论】:

标签: android android-edittext


【解决方案1】:

在您的布局 XML 中使用 android:inputType="number"

【讨论】:

    【解决方案2】:

    这也很好用:

    android:digits="0123456789"
    

    【讨论】:

    • 很好。在XML中使用android:inputType="number" 也可以输入float。
    • 根据问题,这应该是可以接受的答案
    【解决方案3】:

    或者您可以添加以下内容:

    yourEditText.setInputType(InputType.TYPE_CLASS_NUMBER | 
                              InputType.TYPE_NUMBER_FLAG_DECIMAL |
                              InputType.TYPE_NUMBER_FLAG_SIGNED);
    

    这将接受数字、浮点数和 您可以根据需要删除任何负数

    【讨论】:

      【解决方案4】:

      您可以在 XML 文件中使用 android:inputType="number"。您也可以指定其他值,例如 numberDecimal

      此外,您可能还想将android:singleLine="true" 用于单行Edittext

      另外,请查看android:numericandroid:maxLength。 maxLength 特别适用于设置长度限制。

      【讨论】:

      • 如果我的editText出现在对话框中,我只在.java代码中声明它怎么办?即对话框 editText 不会出现在 XML 文件中。我怎样才能做到这一点?
      【解决方案5】:

      如果您需要支持十进制数字,请使用:

        android:inputType="numberDecimal"
      

      【讨论】:

        【解决方案6】:

        这是最终的解决方案:

         public static void enforceEditTextUseNumberOnly(EditText field) {
                Typeface existingTypeface = field.getTypeface();
                field.setInputType((InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD));
                field.setTransformationMethod(new NumericKeyBoardTransformationMethod());
                field.setTypeface(existingTypeface);
                if (field.getParent().getParent() instanceof TextInputLayout) {
                    ((TextInputLayout) field.getParent().getParent()).setPasswordVisibilityToggleEnabled(false);
                }
            }
        
          private static class NumericKeyBoardTransformationMethod extends PasswordTransformationMethod {
                @Override
                public CharSequence getTransformation(CharSequence source, View view) {
                    return source;
                }
            }
        

        【讨论】:

          猜你喜欢
          • 2022-12-05
          • 1970-01-01
          • 2014-06-06
          • 1970-01-01
          • 1970-01-01
          • 2016-07-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多