Ich habe ein EditText-Feld und möchte, dass die Standardtastatur, die angezeigt wird, wenn sie als Ziffernblock ausgewählt wird, da Benutzer meistens Zahlen eingeben . Ich möchte jedoch zulassen, dass Benutzer bei Bedarf auch alphabetische Zeichen eingeben können. Die Verwendung android:inputType="number"
beschränkt die Eingabe nur auf numerische Ziffern. Welche Möglichkeiten habe ich?
android
android-keypad
Frank Bozzo
quelle
quelle
Antworten:
Definieren Sie Ihren EditText in Ihrer XML folgendermaßen:
Ausgabe: android: inputType = "textVisiblePassword"
Eine Reihe von Zahlen und der Rest von Buchstaben.
quelle
Ich würde eine robustere Lösung vorschlagen:
Präsentieren Sie dem Benutzer die Möglichkeit, den Eingabetyp auszuwählen:
BENÖTIGTE FIXES
- Bessere Handhabung beim Ein- / Ausblenden der Eingangsauswahltasten
- Entfernen Sie wahrscheinlich die Vorschläge, wenn der Eingabetyp Buchstabe ist
Hier ist die Aktivität:
Hier ist die XML der Aktivität:
activity_main.xml
quelle
Folgendes suchen Sie:
Definieren Sie Ihre
EditText
in Ihrer XML wie folgt:Und rufen Sie folgendes an
onCreate()
:Wann immer Sie in Ihr
EditText
Jetzt klicken , können Sie Ziffern UND Buchstaben eingeben ! (Zifferntastatur wird zuerst angezeigt)quelle
Dies ist leider nicht möglich, da nur ein inputType für einen EditText festgelegt werden kann. Im Folgenden werden nur alphabetische Zeichen auf Schaltflächen angezeigt.
Ich kann Ihnen jedoch vorschlagen, dass Sie Ihren Eingabetyp auf numerisch setzen und einfach eine kleine switchKeyboard-Schaltfläche in Ihrem Formular in der Nähe des Nummernblocks hinzufügen. Und setzen Sie seinen onClick
Damit können Benutzer auch zu alphabetischen Zeichen wechseln.
quelle
TYPE_CLASS_NUMBER | TYPE_NUMBER_FLAG_SIGNED
. Aber Sie können nie Klassen wienumber
undtext
number|text
(siehe oben), was bedeutet, dass Sie Buchstaben durch langes Drücken eingeben können, was eigentlich nicht funktioniert. sieht für mich eher fehlerhaft oder zumindest unvollständig aus.TYPE_MASK_CLASS
: Maske von Bits erwähnt, die die gesamte angegebene Textklasse bestimmen. Unterstützte Klassen sind: TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE, TYPE_CLASS_DATETIME. IME-Autoren: Wenn die Klasse keine ist, die Sie verstehen, nehmen Sie TYPE_CLASS_TEXT ohne Variation oder Flags an. "Grundsätzlich wird der Eingabetyp EditText verwendet, um den Eingabetyp festzulegen in Ihrem EditText festzulegen.
Die möglichen Werte für
android:inputtype
sind:Dann können Sie einen beliebigen Wert verwenden, wie im Beispiel gezeigt:
quelle
Asus Tablet hat diese Funktion, sie haben die Standardtastatur angepasst. Und die Tastatur enthält nur die Zahlen und Alphabete. Ich denke, Ihre Anforderungslösung besteht auch darin, die Standardtastatur anzupassen
quelle
Sie können der Antwort von Paresh Mayani folgen.
Und als Hinweis können Sie
android:inputType="textPhonetic"
für den inputType Text und die Nummer basierend auf der Benutzerauswahl verwenden.Hoffe du wirst meinen Standpunkt verstehen.
quelle
Führen Sie in OnCreate in Activity Folgendes aus:
In diesem Fall geben Sie is ein
number
und Android zeigt die numerische Tastatur an, aber Sie können eingeben, was Sie wollen. Sie können auch andere Methoden überschreiben, wie Sie möchten.quelle
So habe ich es erreicht ...
android: inputType = "textPhonetic | numberDecimal" android: digits = "/ 0123456789.abcdefghijklmnopqrstuvwxyz"
Es werden nur durch Ziffern angegebene Zeichen zugelassen.
Bitte beachten Sie, dass die gezeigte Tastatur die des Dialers ist und nicht die typische Tastatur. Für mich hat es das erreicht, was ich brauchte, um vollständig im XML zu arbeiten.
quelle
In diesem Fall sollten Sie keinen inputType-Filter verwenden. Fügen Sie einfach die folgende Zeile in Ihre EditText-Eigenschaft ein
Jetzt dürfen nur diese Zeichen in den EditText eingegeben werden. Der vollständige Code Ihres Edittext lautet wie folgt:
quelle
Warum nicht einfach eine Umschalttaste haben, die entweder:
Auf diese Weise können Sie den Ziffernblock auf die Standardeinstellung setzen und ihn dann durch Drücken einer Taste ändern.
quelle
Das ist nicht möglich angesichts der aktuellen Standard-Android-Eingabetypen für verschiedene Telefone .
Es gibt viele mögliche Hacks , dass die Arbeit an einigen Tastaturen , aber nicht auf andere , wie das gemeinsame Verfahren zur Herstellung der Roh - Eingangstyp eingestellt werden, die üblicherweise in den Antworten enthalten ist:
editText.setRawInputType(InputType.TYPE_CLASS_NUMBER)
Der beste Rat, den ich finden konnte, ist die Verwendung des
textPostalAddress
Eingabetyps in Ihrem XML:android:inputType="textPostalAddress"
Leider ist dies nicht tun , was wir es tun wollen noch , aber vielleicht wird es in der Zukunft . Der einzige Vorteil davon ist, dass die Metainformationen in Ihrem Bearbeitungsfeld Ihre Absichten widerspiegeln.
quelle
Programmatisch ist es mit ein wenig Anpassung an den üblichen Ablauf möglich. Zuerst müssen Sie editText wie folgt einstellen:
editText.setInputType(InputType.TYPE_CLASS_NUMBER);
Dann müssen Sie auf keyevent warten. Stellen Sie beim Drücken von Pfund den InputType erneut auf InputType.TYPE_CLASS_TEXT ein. Dies sollte so funktionieren, wie es für mich funktioniert.
quelle
Sie können versuchen, --- einzustellen
für weitere Beschreibung
quelle
Entfernen Sie in Ihrem Code für textView den "Text" in android: inputType.
Es sollte sein,
quelle
Sie können dies programmgesteuert tun:
quelle
Wie Saurav sagt, ist der beste Weg, mit einem einfachen Listener zwischen QWERTY Keyboard und Numeric Keyborad zu wechseln:
quelle
Ich versuche alle Methoden, aber nicht perfekt. Ich habe also eine andere Idee. Funktioniert perfekt für alle Tastaturen.
quelle
Fügen Sie in Ihrem XML-Layout für EditText diesen Parameter hinzu:
Auf diese Weise kann der Benutzer sowohl Text als auch Zahlen eingeben und enthält die Logik in der XML, anstatt Code in Ihrer Aktivität oder Ihrem Fragment zu haben.
quelle