Wie setze ich nur einen numerischen Wert für Edittext in Android?

209

Ich habe eine, edittextin die nur ganzzahlige Werte eingefügt werden sollen. Kann mir jemand sagen, welche Immobilie ich nutzen muss?

Sourabh
quelle

Antworten:

403

Ich denke android:inputType="number"an die XML-Attribute.

Utyi
quelle
11
Mann, ich liebe Android-Entwickler ... so viel Aufhebens, um diese Option auf Webseiten zu bekommen!
Alex
14
Hallo, in Android 2.3.3 ist es "numberSigned". Habe es gerade hier niedergeschrieben, falls jemand danach sucht :)
Zitronensaft
Was passiert, wenn mein editText im Dialogfeld angezeigt wird und ich ihn daher nur im Java-Code deklariere? dh der Dialog editText erscheint nicht in der XML-Datei. Wie kann ich das noch erreichen?
Sibbs Gambling
1
Darüber hinaus könnten Sie stattdessen verwenden android:inputType="phone". Aber es scheint ein bisschen "beschäftigt" zu sein.
Chad Bingham
126

Beispielsweise:

<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>
Barmaley Roter Stern
quelle
3
Dies ist die beste Lösung!
RRTW
2
Ich gehe davon aus, dass die Zeichenfolge gelesen werden sollte 0123456789.und nicht0123456780.
audiFanatic
Dies funktioniert auch mit Android: inputType = "number"! Ich brauchte es, um zu verhindern, dass Benutzer Operatoren, Klammern usw. auf dem Nummernblock eingeben. Was für ein Lebensretter, Mann! Willkommen bei Costco; Ich liebe dich!
Gonzobrains
2
Dies erlaubt Ihnen nicht, negative Zahlen zu setzen und gleichzeitig erlaubt es doppelte Dezimalstellen (Beispiel: 1.1.1 .....)
Rushi Ayyappa
Schön, Android hinzuzufügen: Ziffern kümmert sich auch um das Kopieren und Einfügen.
StoneLam
107

Im Code könnten Sie tun

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);
Sourabh
quelle
@ MohamedKhamis es ist der Name des EditText
KERiii
1
Sourabh bat um "Es müssen nur ganzzahlige Werte eingefügt werden". Dies ermöglicht die Eingabe von viel mehr.
Zon
30

Verwenden Sie nur für die Eingabe von Ziffern android:inputType="numberPassword"zusammen miteditText.setTransformationMethod(null); , um das automatische Ausblenden der Nummer zu entfernen.

ODER

android:inputType="phone"

Ich bin der Meinung, dass diese paar Möglichkeiten besser sind, wenn nur Ziffern eingegeben werden android:inputType="number" . Die Einschränkung der Angabe von "number" als inputType besteht darin, dass über die Tastatur auf Zeichen umgeschaltet und andere Sonderzeichen eingegeben werden können. "numberPassword" inputType hat diese Probleme nicht, da auf der Tastatur nur Ziffern angezeigt werden. Sogar "phone" inputType funktioniert, da Sie mit der Tastatur nicht zu Zeichen wechseln können. Sie können jedoch weiterhin einige Sonderzeichen wie +, /, N usw. eingeben.

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

inputType = "numberPassword"

inputType = "Telefon"

inputType = "Telefon"

inputType = "number"

inputType = "number"

abhiank
quelle
1
Dies ist perfekt! android:inputType="numberPassword"zusammen miteditText.setTransformationMethod(null);
coderpc
Dieser Tipp macht meine Bewerbung perfekt.
Kernelzero
6
android:inputType="numberDecimal"
Nafiz
quelle
5
Das ist großartig, aber das Integer-Zahlensystem enthält keine Dezimalzahlen.
RileyE
@ RileyE Was meinst du damit? Wir haben gerade damit begonnen, dies für alle unsere numerischen Eingaben zu verwenden, und ich möchte sicherstellen, dass uns nichts fehlt. Vielen Dank!
Joshua Pinter
4
<EditText
android:id="@+id/age"
android:numeric="integer" 
/>
Sandeep V.
quelle
3
android: numeric ist seit API 3 veraltet, siehe Antwort auf stackoverflow.com/questions/12625380/…
winne2
2

Wenn Sie das Folgende verwenden, können Sie Ihr Problem besser lösen.

in xml:

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

oder // in Aktivität innerhalb von 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();
            }
Rushi Ayyappa
quelle
2

Wenn jemand nur eine Zahl von 0 bis 9 mit imeOptionsAktivierung verwenden möchte, verwenden Sie die folgende Zeile in IhremEditText

android: inputType = "number | none"

Dies erlaubt nur die Nummerierung und wenn Sie auf die Schaltfläche Fertig / Weiter der Tastatur klicken, bewegt sich Ihr Fokus zum nächsten Feld.

Sandeep
quelle
0

Sie können es in XML verwenden

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

oder,

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

oder,

android:inputType="phone"

Programmgesteuert können Sie
editText.setInputType (InputType.TYPE_CLASS_NUMBER) verwenden.

Rubela Shome
quelle
0

Ich muss mit TextWatcher die Eingabetaste auf einer Tastatur drücken . Aber ich fand heraus, dass alle numerischen Tastaturen android: inputType = "number" oder "numberDecimal" oder "numberPassword" usw. mir nicht erlauben, die Eingabetaste zu fangen, wenn der Benutzer darauf drückt.

Ich habe es versucht android:digits="0123456789\n"und alle numerischen Tastaturen begannen mit Enter und TextWatcher zu arbeiten.

Mein Weg ist also:

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

Plus editText.setTransformationMethod(null)

Danke an Barmaley und Abhiank.

Alexander Key
quelle
0

Ich weiß nicht, was die richtige Antwort in '13 war, aber heute ist es:

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

Sie erhalten alles, einschließlich der Bildschirmtastatur ist ein Ziffernblock.

Beinahe alles. Espresso lässt in seiner unendlichen Weisheit typeText("...")unerklärlicherweise den Filter umgehen und in den Müll gelangen ...

Phlip
quelle
-4

das einfachste für mich

android:numeric="integer" 

obwohl dies auch mehr anpassen

android:digits="0123456789"
Henry Simon
quelle
android: numeric ist seit API 3 veraltet, siehe Antwort auf stackoverflow.com/questions/12625380/…
winne2