Wie beschränke ich meine EditText-Eingabe auf numerische (möglicherweise dezimale und vorzeichenbehaftete) Eingaben?
Lesezeit: 4 Minuten
kibibyte
Ich habe Android gelesen: EditText auf Zahlen beschränken und Wie zeige ich die Zahlentastatur auf einem EditText in Android an?. Leider scheint keiner von ihnen meinen Bedürfnissen zu entsprechen.
Ich möchte meine EditText-Eingabe auf nur Zahlen beschränken. Ich möchte jedoch auch eine vorzeichenbehaftete und/oder dezimale Eingabe zulassen.
Hier ist mein aktueller Code (ich muss dies programmgesteuert tun):
EditText edit = new EditText(this);
edit.setHorizontallyScrolling(true);
edit.setInputType(InputType.TYPE_CLASS_NUMBER);
Damit beschränkt my EditText fröhlich alle Eingaben auf numerische Ziffern. Leider erlaubt es nichts anderes, wie den Dezimalpunkt.
Wenn ich diese Zeile ändere in edit.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL), der EditText akzeptiert alle Eingaben (was ich nicht will…).
Ich habe versucht, Flags zu kombinieren (in meiner Verzweiflung, um zu sehen, ob es funktionieren würde):
Das hat auch nicht funktioniert (der EditText hat alle Eingaben wie gewohnt akzeptiert).
Also, wie mache ich das?
Programmatisch? Sie wären also gegen eine XML-Layout-Lösung?
– Phil
2. August ’11 um 22:51
Ich wäre nicht dagegen, solange ich einen EditText im Handumdrehen erstellen kann.
– kibibyte
3. August ’11 um 1:54
Es gibt keinen Grund zu verwenden setRawInputType(), benutz einfach setInputType(). Sie müssen jedoch die Klasse und die Flags mit dem OR-Operator kombinieren:
Gibt einen Aufwärtstick, wenn Sie auch den XML-Code zum Setzen dieser Flags anzeigen.
– Matt Stevens
2. Januar ’14 um 1:44
Dies ist nicht ausreichend. Sie können weiterhin mehrere Dezimalstellen eingeben. Das ist keine gültige Zahl.
– Andreas
9. Okt. 14 um 19:40 Uhr
Manchmal lässt mich Android meine Haare ausreißen. Warum ist etwas so Einfaches so unglaublich schwer und fehleranfällig?
– DiscDev
17. September ’15 um 19:36
Verdammt alles versucht … jetzt frage ich mich, ob es in einem einzelnen oder statischen dynamischen Edittext mit einem einfachen Eingabetyp mit einer Anweisung funktioniert, mit mehreren dynamischen et (et in einem Array) muss ich nicht hierher kommen, um zu retten.. danke Mann
– Nasz Njoka sen.
2. März ’16 um 11:19
Beachten Sie, dass das Flag mit Vorzeichen nicht benötigt wird, wenn Sie keine negativen Werte zulassen möchten
Wie genau würde ich das aufrufen? Rufe ich die Anrufe einfach in einer Kette auf?
– kibibyte
3. August ’11 um 1:50
mit deinem Beispielcode: edit.setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
– Dan S
3. August ’11 um 4:02
Hey, es ist in Ordnung, ich habe gerade den Setter ausgewählt, der dem Android-Eingabetyp zugeordnet ist. Ich freue mich, dass Sie es gefunden haben und ich war in der Nähe. Ja, es ist nur eine kleine Maske mit Flaggen, nicht alle, aber viele.
– Dan S
3. August ’11 um 4:19
Was war die Lösung? mit diesen erhalte ich immer noch Schlüssel, die ich nicht möchte, wie “*”,”#”, und parentesis, etc…ich will nur Zahlen und -/+/. Zeichen, wie geht das?
fun EditText.onlyNumbers() {
inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL or
InputType.TYPE_NUMBER_FLAG_SIGNED
keyListener = DigitsKeyListener.getInstance("0123456789")
}
Es ist das, was ich will, danke
– Hossein Kurd
6. November ’17 um 12:17
Darf ich wissen, wie man ihnen erlaubt, nur 11 Zahlen einzugeben? @V.Kalyuzhnyu
– Leon Zaii
31. Okt. 18 um 4:14 Uhr
@LeonZaii erlaubt nur die Eingabe von “1” und überprüft, ob die Stringlänge durch zwei teilbar ist
– Vlad
31. Okt ’18 um 6:17
füge diese Zeile ein xml
android:inputType="number|numberDecimal"
Schön! Ich kann nicht einmal schlechte Zeichen kopieren und einfügen! (Ja, ich weiß, wie man auf Android kopiert und einfügt;)
– Philipp
19. Dezember ’19 um 22:53
Jetzt muss ich nur noch den Benutzer benachrichtigen, wenn er a . eingibt 0, was immer noch verboten ist…
– Philipp
19. Dezember ’19 um 22:55
Hallo zusammen Dieses Problem hatte ich auch. Ich verwende C# mit Xamarin
Nur eine kleine Anmerkung, die ich hoffe, jemand anderen auch.
Ich habe mehrere der hier genannten Methoden ausprobiert.
Bitte beachten Sie, dass die Reihenfolge dieser wichtig ist. Wenn Sie Dezimal an erster Stelle setzen, können Sie trotzdem beliebige Zeichen eingeben, wobei Wenn Zahl an erster Stelle steht, ist es nur numerisch, erlaubt jedoch ein Dezimaltrennzeichen!
Nicht programmatisch schaffe ich das mit just android:inputType="numberDecimal"
– mgabz
19. Sept. 17 um 16:08 Uhr
EditText edit = new EditText(this);
edit.setHorizontallyScrolling(true);
edit.setInputType(EditorInfo.TYPE_NUMBER_FLAG_SIGNED|EditorInfo.TYPE_CLASS_NUMBER);
Nicht programmatisch schaffe ich das mit just android:inputType="numberDecimal"
– mgabz
19. Sept. 17 um 16:08 Uhr
Um den Eingabetyp von EditText als Dezimalzahl festzulegen, verwenden Sie diesen Code:
EditText edit = new EditText(this);
edit.SetRawInputType(Android.Text.InputTypes.NumberFlagDecimal | Android.Text.InputTypes.ClassNumber);
.
2221400cookie-checkWie beschränke ich meine EditText-Eingabe auf numerische (möglicherweise dezimale und vorzeichenbehaftete) Eingaben?yes
Programmatisch? Sie wären also gegen eine XML-Layout-Lösung?
– Phil
2. August ’11 um 22:51
Ich wäre nicht dagegen, solange ich einen EditText im Handumdrehen erstellen kann.
– kibibyte
3. August ’11 um 1:54