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

209

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

Sourabh
la source

Réponses:

403

Je suppose que android:inputType="number"les attributs XML.

Utyi
la source
11
Mec, j'adore les développeurs Android ... une telle histoire pour obtenir cette option dans les pages Web!
Alex
14
Salut, dans Android 2.3.3, c'est "numberSigned". Je viens de l'écrire ici, au cas où quelqu'un le chercherait :)
Lemon Juice
Que faire si mon editText apparaît dans la boîte de dialogue et que, par conséquent, je le déclare uniquement en code .java? c'est-à-dire que la boîte de dialogue editText n'apparaît pas dans le fichier XML. Comment puis-je encore y parvenir?
Sibbs Gambling
1
De plus, vous pouvez utiliser android:inputType="phone"à la place de cela. Mais cela semble un peu plus "occupé".
Chad Bingham
126

Par exemple:

<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>
Barmaley Red Star
la source
3
C'est la meilleure solution !
RRTW
2
Je suppose que la chaîne doit être lue 0123456789.et non0123456780.
audiFanatic
Cela fonctionne aussi avec android: inputType = "number"! J'en avais besoin pour empêcher les utilisateurs de taper des opérateurs, des parenthèses, etc. sur le pavé numérique. Quel sauveur de vie, mec! Bienvenue chez Costco; Je t'aime!
gonzobrains
2
Cela ne vous permettra pas de mettre des nombres négatifs et en même temps cela permettra des doublons décimaux. (Ex: 1.1.1 .....)
Rushi Ayyappa
Bien, en ajoutant Android: les chiffres gèrent également le cas du copier-coller.
StoneLam
107

En code, vous pourriez faire

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);
Sourabh
la source
@MohamedKhamis c'est le nom de EditText
KERiii
1
Sourabh a demandé que "Seules les valeurs entières soient insérées". Cela permet de saisir beaucoup plus.
Zon
30

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

OU

android:inputType="phone"

Pour la saisie des seuls chiffres, je pense que ces deux méthodes sont meilleures que android:inputType="number". La limitation de la mention de "nombre" comme type d'entrée est que le clavier permet de passer aux caractères et permet également de saisir d'autres caractères spéciaux. "numberPassword" inputType n'a pas ces problèmes car le clavier n'affiche que des chiffres. Même le type d'entrée "téléphone" fonctionne car le clavier ne vous permet pas de passer aux caractères. Mais vous pouvez toujours saisir quelques caractères spéciaux comme +, /, N, etc.

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

inputType = "numberPassword"

inputType = "téléphone"

inputType = "téléphone"

inputType = "nombre"

inputType = "nombre"

abhiank
la source
1
C'est parfait! android:inputType="numberPassword"aveceditText.setTransformationMethod(null);
coderpc
cette astuce rend ce que mon application est parfaite.
Kernelzero
6
android:inputType="numberDecimal"
Nafiz
la source
5
C'est très bien, mais le système de nombres entiers n'inclut aucun nombre décimal.
RileyE
@RileyE Que voulez-vous dire par là? Nous venons juste de commencer à l'utiliser pour toutes nos entrées numériques et je veux m'assurer que nous ne manquons de rien. Merci!
Joshua Pinter
4
<EditText
android:id="@+id/age"
android:numeric="integer" 
/>
Sandeep V
la source
3
android: numeric est déconseillé depuis l'API 3, voir la réponse à stackoverflow.com/questions/12625380/…
winne2
2

l'utilisation de ce qui suit peut mieux résoudre votre problème;

en xml:

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

ou // en activité dans 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();
            }
Rushi Ayyappa
la source
2

Si quelqu'un veut utiliser uniquement le numéro de 0 à 9 avec imeOptionsactiver, utilisez la ligne ci-dessous dans votreEditText

android: inputType = "nombre | aucun"

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

Sandeep
la source
0

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

Rubela Shome
la source
0

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" etc. ne me permettent pas d'attraper Enter lorsque l'utilisateur appuie dessus.

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

Donc ma façon est:

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

plus editText.setTransformationMethod(null)

Merci à barmaley et abhiank.

Alexander Key
la source
0

Je ne sais pas quelle était la bonne réponse en '13, mais aujourd'hui c'est:

myEditText.setKeyListener(DigitsKeyListener.getInstance(null, false, true)); // positive decimal numbers

Vous obtenez tout, y compris le clavier à l'écran est un pavé numérique.

Presque tout. L'espresso, dans sa sagesse infinie, laisse typeText("...")inexplicablement contourner le filtre et entrer dans les poubelles ...

Phlip
la source
-4

le plus simple pour moi

android:numeric="integer" 

bien que cela soit également plus personnalisé

android:digits="0123456789"
Henry Simon
la source
android: numeric est déconseillé depuis l'API 3, voir la réponse à stackoverflow.com/questions/12625380/…
winne2