Come faccio a mostrare la tastiera numerica su un EditText in Android?


146

In pratica voglio solo passare alla modalità tastierino numerico non appena un certo EditText ha lo stato attivo.


4
La domanda non indica specificamente il desiderio di modificare il tipo di input consentito. Chiede semplicemente come cambiare la modalità tastiera, che è quello che vorrei fare senza cambiare il tipo di input. Tutte le risposte spiegano come modificare il tipo di input.
AlanKley,

Controlla la mia risposta a questa domanda stackoverflow.com/questions/39593324/…
Guida di Android

Risposte:


261

Puoi configurare un inputTypeper il tuo EditText:

<EditText android:inputType="number" ... />

6
Inoltre, devi utilizzare come target Android 1.5 per utilizzare questo (non è disponibile in 1.1)
Wilka,

4
Il problema è che non puoi tornare indietro. L'uso di "numero | testo" non funziona neanche. Sembra che se vuoi mostrare una tastiera numerica, non puoi permettergli di tornare al testo.

Sono d'accordo con Brian..se il primo campo è alfa e il campo successivo è numerico, non posso passare al campo successivo usando il pulsante 'Avanti'!
Ahmed,

Se puoi tornare indietro o meno dipende dal telefono penso. Il mio lo permette.
Martin Clemens Bloch,

Voglio cambiare il numero del tipo di keybord e voglio incollare il testo in edittext. Come fare?
İbrahim YANIK,

115

Per farlo in un file Java:

EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);

51

Ho trovato utile questa implementazione, mostra una tastiera migliore e limita i caratteri di input.

<EditText
    android:inputType="phone"
    android:digits="1234567890"
    ...
/>

Inoltre, è possibile utilizzare android:maxLengthper limitare il numero massimo di numeri.

Per fare ciò a livello di codice:

editText.setInputType(InputType.TYPE_CLASS_PHONE);

KeyListener keyListener = DigitsKeyListener.getInstance("1234567890");
editText.setKeyListener(keyListener);

C'è un modo per farlo programmaticamente? Morire per ottenere una tastiera numerica limitata per il mio EditText ma è impostato in modo tale che debba essere generato nell'attività.
Martin Erlic,

18
<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    ...
    android:inputType="number|phone"/> 

mostrerà il tastierino numerico grande come dialer.


11

Puoi farlo in 2 modi

  1. Set di runtime

    EditText input = new EditText(this);
    input.setInputType(InputType.TYPE_CLASS_NUMBER);
  2. Utilizzando XML

    <EditText
        ...
        android:inputType="number" />

5

Se hai bisogno di un numero frazionario, questa è la risposta per te:

android:inputType="numberDecimal"

4

Se stai usando il tuo EditText nella finestra di dialogo o la creazione in modo dinamico e non puoi impostarlo da XML, questo esempio ti aiuterà a impostare quel tipo di tastiera mentre stai usando Modifica testo dinamico ecc.

myEditTxt.setInputType(InputType.TYPE_CLASS_NUMBER);

dove myEditTxt è l'oggetto EDIT TEXT dinamico (nome)


2
editText.setRawInputType(InputType.TYPE_CLASS_NUMBER);

Se stai formattando manualmente un testo (come per la valuta) e vuoi controllare solo la tastiera, questa è la scelta. Non filtrerà i tuoi caratteri. Grazie!
lauksas,

Questo ha funzionato come un incanto per me. Voglio visualizzare un valore di segnaposto testuale quando un campo non è stato ancora modificato, ma limitare ancora l'input ai numeri e visualizzare una tastiera con restrizioni.
Alex Suzuki,


2

Il codice seguente consentirà solo i numeri "0123456789", anche se si digita accidentalmente diverso da "0123456789", la modifica del testo non accetterà.

    EditText number1 = (EditText) layout.findViewById(R.id.edittext); 
    number1.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_CLASS_PHONE);
    number1.setKeyListener(DigitsKeyListener.getInstance("0123456789”));

Dovresti aggiungere un commento che spieghi il tuo codice e perché è la soluzione
cyroxis,

1

Utilizzare il codice seguente nel file java

editText.setRawInputType (Configuration.KEYBOARD_QWERTY);


0

Definiscilo nel tuo codice xml

android:inputType="number"

0
EditText number1 = (EditText) layout.findViewById(R.id.edittext); 
number1.setInputType(InputType.TYPE_CLASS_NUMBER);

Se hai creato EditText numero1 creato nel codice xml del layout, quindi se vuoi impostare Numero tastiera su numero1 Modifica testo, puoi farlo in questo modo usando Java Code.
Shiv Buyya,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.