comment forcer le EditText à n'accepter que des nombres?
Utilisez Android:inputType="number"
dans votre mise en page XML
Cela fonctionne aussi très bien:
Android:digits="0123456789"
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
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.
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;
}
}