2 Stimmen

Android Wie zeige ich ein numerisches Softkeyboard mit EditText of InputType="text"?

Ich brauche erlauben, um Benutzer numerische Informationen in einem EditText eingeben, aber die Ausgabe muss wie "##.###,##" (# in [0..9]) formatiert werden. Die Formatierung wurde ich in einem TextWatcher gemacht... das ist gut, der TextWatcher macht den Job... aber, wenn der Benutzer den EditText auswählt, wie es als Text markiert, wird die AlphaKeyboard angezeigt, wenn ich den EditText als numerische die Tastatur auswählen, die ich brauche angezeigt wird und der TextWatcher aufhören zu arbeiten.

0voto

Amol Gupta Punkte 716

Fügen Sie Folgendes in Ihre xml-Datei an der gewünschten Stelle ein

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

beziehen sich auf Wie zeige ich die Zahlentastatur auf einem EditText in Android?

0voto

kosa Punkte 65422

Sie müssen den Eintrag edittext wie folgt ändern.

<EditText android:inputType="phone" android:numeric="decimal"></EditText>

0voto

picaso Punkte 713

Verwenden Sie diesen Code, um die Softtastatur anzuzeigen.

 InputMethodManager imm = (InputMethodManager) getSystemService(
        Context.INPUT_METHOD_SERVICE);
  imm.showSoftInputFromInputMethod(v.getApplicationWindowToken(), 1);

0voto

Tvd Punkte 4373

Da Sie die Formatierung in TextWatcher vornehmen (##,####....), d.h. Sie fügen "," in EditText ein und haben den EditText als numerischen Text erstellt. Wenn der Text numerisch ist, dann ist das "," Zeichen ungültig. Daher kann der TextWatcher den formatierten Text, der "," enthält, nicht aktualisieren.

Sie haben 3 Möglichkeiten, mit diesem Problem umzugehen:

  1. Machen Sie den EditText als normalen Text statt als numerischen Text. Achten Sie in TextWatcher auf alle anderen ungültigen Zeichen außer 0-9. Sie können IME für Mumber Keypad anzeigen, wenn der Fokus auf dem EditText ist.
  2. Maske für EditText verwenden.
  3. Sie soll numerisch sein. Trap FocusGain & FocusLost für den EditText. In focusGain, entfernen Sie die Formatierung & setzen Sie den inputType auf Numeric. & In focusLost, machen Sie zuerst den input type auf Normal und aktualisieren Sie dann den eingegebenen Wert auf formmated value. Sie können den Eingabetyp zur Laufzeit auf Normal setzen, indem Sie setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL); & für die numerische Verwendung : setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);

Ich glaube, dass die 1. Option am besten zu handhaben und zu bewältigen sein wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X