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.

Chiwai Chan
quelle
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" ... />
Josef Pfleger
quelle
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);
Dominic
quelle
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);
Matthijs
quelle
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.

Nguyen Minh Binh
quelle
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" />
Nirav Ranpara
quelle
5

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

android:inputType="numberDecimal"
macio.Jun
quelle
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).

Pir Fahim Shah
quelle
2
editText.setRawInputType(InputType.TYPE_CLASS_NUMBER);
Aliya
quelle
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

Weitere Eingabetypen und Details finden Sie hier auf der Google-Website

Sai Gorantla
quelle
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”));
Akhila Madari
quelle
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);

Darshuu
quelle
0

Definieren Sie dies in Ihrem XML-Code

android:inputType="number"
fulgen
quelle
0
EditText number1 = (EditText) layout.findViewById(R.id.edittext); 
number1.setInputType(InputType.TYPE_CLASS_NUMBER);
Shiv Buyya
quelle
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