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?

Antworten:


403

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


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"
/>

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);

@ 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"


1
Dies ist perfekt! android:inputType="numberPassword"zusammen miteditText.setTransformationMethod(null);
coderpc

Dieser Tipp macht meine Bewerbung perfekt.
Kernelzero

6
android:inputType="numberDecimal"

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


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();
            }

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.


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.


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.


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 ...


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.