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.