Réponses:
Je suppose que android:inputType="number"
les attributs XML.
android:inputType="phone"
à la place de cela. Mais cela semble un peu plus "occupé".
Par exemple:
<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>
0123456789.
et non0123456780.
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 = "téléphone"
inputType = "nombre"
android:inputType="numberPassword"
aveceditText.setTransformationMethod(null);
android:inputType="numberDecimal"
<EditText
android:id="@+id/age"
android:numeric="integer"
/>
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();
}
Si quelqu'un veut utiliser uniquement le numéro de 0 à 9 avec imeOptions
activer, 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.
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);
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.
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 ...
le plus simple pour moi
android:numeric="integer"
bien que cela soit également plus personnalisé
android:digits="0123456789"