Je veux juste fondamentalement passer au mode pavé numérique dès qu'un certain EditText a le focus.
Vous pouvez configurer une inputType
Pour le faire dans un fichier Java:
EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);
J'ai trouvé cette implémentation utile, montre un meilleur clavier et limite les caractères d'entrée.
<EditText
Android:inputType="phone"
Android:digits="1234567890"
...
/>
De plus, vous pouvez utiliser Android:maxLength
pour limiter le nombre maximal de nombres.
Pour le faire par programme:
editText.setInputType(InputType.TYPE_CLASS_PHONE);
KeyListener keyListener = DigitsKeyListener.getInstance("1234567890");
editText.setKeyListener(keyListener);
<EditText
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
...
Android:inputType="number|phone"/>
affichera le grand pavé numérique en tant que composeur.
Vous pouvez le faire de 2 façons
Ensemble d'exécution
EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);
Utiliser XML
<EditText
...
Android:inputType="number" />
Si vous avez besoin d'un nombre fractionnaire, voici la solution:
Android:inputType="numberDecimal"
Si vous utilisez votre texte d'édition dans la boîte de dialogue ou créez de manière dynamique et que vous ne pouvez pas le définir à partir de xml, cet exemple vous aidera à définir ce type de clavier lorsque vous utilisez un texte dynamique, etc.
myEditTxt.setInputType(InputType.TYPE_CLASS_NUMBER);
où myEditTxt est l'objet dynamique EDIT TEXT (nom)
Plus de types d'entrées et de détails trouvés ici sur le site de Google
Utilisez le code ci-dessous dans le fichier Java
editText.setRawInputType (Configuration.KEYBOARD_QWERTY);
editText.setRawInputType(InputType.TYPE_CLASS_NUMBER);
Définissez ceci dans votre code XML
Android:inputType="number"
EditText number1 = (EditText) layout.findViewById(R.id.edittext);
number1.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_CLASS_PHONE);
number1.setKeyListener(DigitsKeyListener.getInstance("0123456789”));
Ce code ne prend que des chiffres de "0123456789", même si vous tapez accidentellement autre que "0123456789", le texte modifié ne sera pas accepté.
EditText number1 = (EditText) layout.findViewById(R.id.edittext);
number1.setInputType(InputType.TYPE_CLASS_NUMBER);