web-dev-qa-db-fra.com

comment définir uniquement la valeur numérique pour edittext dans Android?

J'ai une edittext dans laquelle je veux que seules des valeurs entières soient insérées. Quelqu'un peut-il me dire quelle propriété je dois utiliser?

184
Sourabh

Je suppose que Android:inputType="number" aux attributs XML.

373
Utyi

Par exemple:

<EditText
Android:id="@+id/myNumber"
Android:digits="0123456789."
Android:inputType="numberDecimal"
/>
116
barmaley

En code, vous pourriez faire

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);
103
Sourabh

Pour les chiffres uniquement, utilisez Android:inputType="numberPassword" avec editText.setTransformationMethod(null); pour supprimer le masquage automatique du numéro. 

OU 

Android:inputType="phone"

Pour la saisie de chiffres uniquement, je pense que ces deux manières sont meilleures que Android:inputType="number". La limitation de "nombre" en tant que inputType est que le clavier permet de basculer vers des caractères et permet également de saisir d'autres caractères spéciaux. "numberPassword" inputType ne présente pas ces problèmes, car le clavier n'affiche que les chiffres. Même "phone" inputType fonctionne car le clavier ne vous permet pas de basculer vers des caractères. Mais vous pouvez toujours entrer quelques caractères spéciaux comme +, /, N, etc. 

Android: inputType = "numberPassword" avec editText.setTransformationMethod (null); 

 inputType="numberPassword"

inputType = "phone"

 inputType="phone"

inputType = "nombre"

 inputType="number"

23
abhiank
Android:inputType="numberDecimal"
6
Nafiz
<EditText
Android:id="@+id/age"
Android:numeric="integer" 
/>
3
Sandeep V

Si quelqu'un souhaite utiliser uniquement un nombre compris entre 0 et 9 avec imeOptions enable, utilisez la ligne ci-dessous dans votre EditText

Android: inputType = "numéro | aucun"

Cela n'autorisera que le nombre et si vous cliquez sur le bouton Terminé/Suivant du clavier, votre focus passera au champ suivant.

2
Sandeep

en utilisant ce qui suit, vous pourrez mieux résoudre votre problème.

en xml:

<EditText
      Android:id="@+id/age"
      Android:inputType="numberDecimal|numberSigned"        />

ou // en activité à l'intérieur de etfield.addtextchangelistener

     private String blockCharacterSet="+(/)N,*;#";//declare globally
               try {
                for (int i = 0; i < s.length(); i++) {


                    if (blockCharacterSet.contains(s.charAt(i) + "")) {

                        String corrected_settempvalue = arrivalsettemp.substring(0, arrivalsettemp.length() - 1);
                        et_ArrivalSetTemp.setText(corrected_settempvalue);
                        if (corrected_settempvalue.length() != 0)
                            et_ArrivalSetTemp.setSelection(corrected_settempvalue.length());

                    }
                }
            } catch (Exception d) {
                d.printStackTrace();
            }
2
Rushi Ayyappa

Vous pouvez l'utiliser en XML

<EditText
 Android:id="@+id/myNumber"
 Android:digits="123"
 Android:inputType="number"
/>

ou,

Android:inputType="numberPassword" along with editText.setTransformationMethod(null); to remove auto-hiding of the number.

ou,

Android:inputType="phone"

Par programme, vous pouvez utiliser
editText.setInputType (InputType.TYPE_CLASS_NUMBER);

0
Rubela Shome

Je dois attraper en appuyant sur Entrée sur un clavier avec TextWatcher . Mais j'ai découvert que tous les claviers numériques Android: inputType = "number" ou "numberDecimal" ou "numberPassword" e.t.c. ne me permettez pas de saisir Enter lorsque l'utilisateur appuie dessus.

J'ai essayé Android:digits="0123456789\n" et tous les claviers numériques ont commencé à fonctionner avec Entrée et TextWatcher.

Donc, mon chemin est:

Android:digits="0123456789\n"
Android:inputType="numberPassword"

plus editText.setTransformationMethod(null)

Merci à barmaley et abhiank.

0
Alexander Key