come impostare solo il valore numerico per edittext in Android?


209

Ho un edittextin cui voglio inserire solo valori interi. Qualcuno può dirmi quale proprietà devo usare?

Risposte:


403

Immagino android:inputType="number"gli attributi XML.


11
Amico, adoro gli sviluppatori Android ... che confusione per ottenere questa opzione nelle pagine web!
Alex,

14
Ciao, in Android 2.3.3, è "numberSigned". L'ho appena scritto qui, nel caso qualcuno lo stia cercando :)
Succo di limone

Cosa succede se il mio editText appare nella finestra di dialogo e quindi lo dichiaro solo nel codice .java? cioè la finestra di dialogo editText non appare nel file XML. Come posso ancora raggiungere questo obiettivo?
Sibbs Gambling

1
Inoltre, è possibile utilizzare android:inputType="phone"al posto di quello. Ma sembra un po 'più "occupato".
Chad Bingham,

126

Per esempio:

<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>

3
Questa è la soluzione migliore!
RRTW,

2
0123456789.0123456780.
Suppongo che

Funziona con Android: inputType = "numero" pure! Ne avevo bisogno per impedire agli utenti di digitare operatori, parentesi, ecc. Sul tastierino numerico. Che salvavita, amico! Benvenuti in Costco; Ti amo!
gonzobrains,

2
Ciò non ti consentirà di inserire numeri negativi e allo stesso tempo consentirà decimali duplicati (es: 1.1.1 .....)
Rushi Ayyappa

Bello, aggiungendo Android: le cifre gestiscono anche il caso copia e incolla.
StoneLam

107

Nel codice, potresti farlo

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);

@MohamedKhamis è il nome del EditText
KERiii

1
Sourabh ha chiesto "Solo i valori interi da inserire". Ciò consente di inserire molto di più.
Zon

30

Per inserire solo cifre utilizzare android:inputType="numberPassword"insieme a editText.setTransformationMethod(null);per nascondere il numero nascosto automaticamente.

O

android:inputType="phone"

Per l'immissione di sole cifre, sento che questi modi in coppia sono migliori di android:inputType="number". La limitazione di menzionare "numero" come inputType è che la tastiera consente di passare a caratteri e consente anche di inserire altri caratteri speciali. "numberPassword" inputType non presenta questi problemi in quanto la tastiera mostra solo cifre. Anche "phone" inputType funziona in quanto la tastiera non consente di passare ai caratteri. Puoi comunque inserire caratteri speciali di coppia come +, /, N, ecc.

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

InputType = "numberPassword"

InputType = "telefono"

InputType = "telefono"

InputType = "numero"

InputType = "numero"


1
Questo è perfetto! android:inputType="numberPassword"insieme aeditText.setTransformationMethod(null);
coderpc,

questo suggerimento rende perfetta la mia applicazione.
Kernelzero,

6
android:inputType="numberDecimal"

5
Questo è fantastico, ma il sistema di numeri Integer non include numeri decimali.
RileyE

@RileyE Cosa intendi con questo? Abbiamo appena iniziato a usarlo per tutti i nostri input numerici e voglio assicurarmi che non ci manchi qualcosa. Grazie!
Joshua Pinter


2

l'uso del sotto può risolvere meglio il tuo problema;

in xml:

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

o // in attività all'interno di 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();
            }

2

Se qualcuno desidera utilizzare solo numeri da 0 a 9 con imeOptionsabilitazione, utilizzare la riga sotto nel proprioEditText

Android: InputType = "Numero | none"

Ciò consentirà solo il numero e se si fa clic sul pulsante Fine / successivo della tastiera, lo stato attivo passerà al campo successivo.


0

Puoi usarlo in XML

<EditText
 android:id="@+id/myNumber"
 android:digits="123"
 android:inputType="number"
/>

o,

android:inputType="numberPassword" along with editText.setTransformationMethod(null); to remove auto-hiding of the number.

o,

android:inputType="phone"

A livello di programmazione è possibile utilizzare
editText.setInputType (InputType.TYPE_CLASS_NUMBER);


0

Devo intercettare premendo Invio su una tastiera con TextWatcher . Ma ho scoperto che tutte le tastiere numeriche android: inputType = "number" o "numberDecimal" o "numberPassword" ecc. Non mi permettono di catturare Enter quando l'utente lo preme.

Ho provato android:digits="0123456789\n"e tutte le tastiere numeriche hanno iniziato a funzionare con Enter e TextWatcher.

Quindi il mio modo è:

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

più editText.setTransformationMethod(null)

Grazie a Barmaley e Abhiank.


0

Non so quale sia stata la risposta corretta nel '13, ma oggi lo è:

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

Ottieni tutto, compresa la tastiera su schermo è un tastierino numerico.

Quasi tutto. Espresso, nella sua infinita saggezza, lascia typeText("...")inspiegabilmente bypassare il filtro ed entra nella spazzatura ...


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.