如何强制EditText只接受数字?

时间:2012-02-17 19:39:02

标签: android android-edittext

如何强制EditText只接受数字。?

6 个答案:

答案 0 :(得分:93)

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

答案 1 :(得分:45)

这也可行:

android:digits="0123456789"

答案 2 :(得分:30)

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

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

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

答案 3 :(得分:13)

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

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

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

答案 4 :(得分:0)

这是最终的解决方案:

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

答案 5 :(得分:0)

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

  android:inputType="numberDecimal"