Wie zeige ich die Zifferntastatur auf einem EditText in Android?


146

Ich möchte einfach nur in den Nummernblockmodus wechseln, sobald ein bestimmter EditText den Fokus hat.


4
Die Frage gibt nicht ausdrücklich den Wunsch an, den zulässigen Eingabetyp zu ändern. Es wird einfach gefragt, wie der Tastaturmodus geändert werden soll, was ich tun möchte, ohne den Eingabetyp zu ändern. In allen Antworten wird erläutert, wie Sie den Eingabetyp ändern.
AlanKley

Überprüfen Sie meine Antwort auf diese Frage stackoverflow.com/questions/39593324/…
Android-Hilfe

Antworten:


261

Sie können ein konfigurieren inputTypefür EditText:

<EditText android:inputType="number" ... />

6
Beachten Sie auch, dass Sie auf Android 1.5 abzielen müssen, um dies zu verwenden (es ist in 1.1 nicht verfügbar)
Wilka

4
Das Problem ist, dass Sie nicht zurückschalten können. Die Verwendung von "number | text" funktioniert ebenfalls nicht. Wenn Sie eine numerische Tastatur anzeigen möchten, können Sie nicht zulassen, dass sie wieder zu Text wechselt.

Ich stimme Brian zu. Wenn das erste Feld Alpha und das nächste Feld numerisch ist, kann ich nicht mit der Schaltfläche "Weiter" zum nächsten Feld wechseln!
Ahmed

Ob Sie zurückgehen können oder nicht, hängt vom Telefon ab, denke ich. Meins erlaubt es.
Martin Clemens Bloch

Ich möchte die Nummer des Keybord-Typs ändern und Text in edittext einfügen. Wie macht man?
İbrahim YANIK

115

So machen Sie es in einer Java-Datei:

EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);

51

Ich fand diese Implementierung nützlich, zeigt eine bessere Tastatur und begrenzt die Eingabezeichen.

<EditText
    android:inputType="phone"
    android:digits="1234567890"
    ...
/>

Darüber hinaus können Sie android:maxLengthdie maximale Anzahl von Zahlen begrenzen.

So programmgesteuert:

editText.setInputType(InputType.TYPE_CLASS_PHONE);

KeyListener keyListener = DigitsKeyListener.getInstance("1234567890");
editText.setKeyListener(keyListener);

Gibt es eine Möglichkeit, dies programmgesteuert zu tun? Ich möchte unbedingt eine Tastatur mit begrenzter Anzahl für meinen EditText erhalten, diese ist jedoch so eingerichtet, dass sie in der Aktivität generiert werden muss.
Martin Erlic

18
<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    ...
    android:inputType="number|phone"/> 

zeigt den großen Nummernblock als Dialer an.


11

Sie können es auf zwei Arten tun

  1. Laufzeit eingestellt

    EditText input = new EditText(this);
    input.setInputType(InputType.TYPE_CLASS_NUMBER);
  2. Verwenden von XML

    <EditText
        ...
        android:inputType="number" />

5

Wenn Sie eine Bruchzahl benötigen, ist dies die Antwort für Sie:

android:inputType="numberDecimal"

4

Wenn Sie Ihren EditText im Dialogfeld verwenden oder dynamisch erstellen und ihn nicht über XML festlegen können, hilft Ihnen dieses Beispiel beim Festlegen dieses Tastaturtyps, während Sie dynamischen Text bearbeiten usw.

myEditTxt.setInputType(InputType.TYPE_CLASS_NUMBER);

Dabei ist myEditTxt das dynamische EDIT TEXT-Objekt (Name).


2
editText.setRawInputType(InputType.TYPE_CLASS_NUMBER);

Wenn Sie einen Text manuell formatieren (wie bei der Währung) und nur die Tastatur steuern möchten, ist dies die richtige Wahl. Filtert deine Zeichen nicht. Vielen Dank!
Lauksas

Das hat für mich wie ein Zauber gewirkt. Ich möchte einen Textplatzhalterwert anzeigen, wenn ein Feld noch nicht bearbeitet wurde, aber dennoch die Eingabe auf Zahlen beschränken und eine eingeschränkte Tastatur anzeigen.
Alex Suzuki


2

Der folgende Code erlaubt nur die Nummern "0123456789". Selbst wenn Sie versehentlich einen anderen Wert als "0123456789" eingeben, wird der Bearbeitungstext nicht akzeptiert.

    EditText number1 = (EditText) layout.findViewById(R.id.edittext); 
    number1.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_CLASS_PHONE);
    number1.setKeyListener(DigitsKeyListener.getInstance("0123456789”));

Sie sollten einen Kommentar hinzufügen, der Ihren Code erklärt und erklärt, warum er die Lösung ist
Cyroxis

1

Verwenden Sie den folgenden Code in der Java-Datei

editText.setRawInputType (Configuration.KEYBOARD_QWERTY);


0

Definieren Sie dies in Ihrem XML-Code

android:inputType="number"

0
EditText number1 = (EditText) layout.findViewById(R.id.edittext); 
number1.setInputType(InputType.TYPE_CLASS_NUMBER);

Wenn Sie EditText number1 im Layout-XML-Code erstellt haben, können Sie auf diese Weise Java-Code verwenden, wenn Sie Number Keyboard auf number1 EditText setzen möchten.
Shiv Buyya
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.