web-dev-qa-db-fra.com

Comment forcer EditText à n'accepter que des nombres?

comment forcer le EditText à n'accepter que des nombres?

54
user1125258

Utilisez Android:inputType="number" dans votre mise en page XML

92
Denis Babak

Cela fonctionne aussi très bien:

Android:digits="0123456789"
44
Alysson Myller

Ou vous pouvez ajouter ce qui suit:

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

cela acceptera les nombres, les nombres à virgule flottante et les nombres négatifs, vous pouvez les supprimer si nécessaire

30
Sergey Benner

Vous pouvez utiliser Android:inputType="number" dans le fichier XML. Vous pouvez également spécifier d'autres valeurs telles que numberDecimal .

En outre, vous pouvez également utiliser Android:singleLine="true" pour une seule ligne Edittext.

En outre, examinez Android:numeric et Android:maxLength. maxLength en particulier peut être utile pour définir des limites de longueur.

13
Samar

C'est la solution finale:

 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;
        }
    }
0
Pier Betos