how to force the EditText to accept only numbers.?

2

6 Answers

Use android:inputType="number" in your layout XML

This also works fine:

android:digits="0123456789" 
2

Or you can add the following:

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

this will accept numbers, float point numbers and negative numbers you can remove any of these as needed

You can use android:inputType="number" in the XML file. You can specify other values such as numberDecimal as well.

Also, you might additionally want to use android:singleLine="true" for a single line Edittext.

Also, look into android:numeric and android:maxLength. maxLength in particular can be useful for setting length limitations.

1

If you need support for decimal numbers use this:

 android:inputType="numberDecimal" 

This is the final solution:

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

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy