Kennt jemand eine einfache Möglichkeit, negative Zahlen mit dem Standard-Nummernpicker von Android zuzulassen? Ich verstehe, dass es der InputFilter ist, der dies verbietet, aber gibt es einen einfachen Weg, um zu überschreiben, ohne das gesamte Widget neu zu schreiben?
Jede Hilfe würde sehr geschätzt werden.
Eine allgemeinere und elegantere Lösung besteht darin, NumberPicker.Formatter zu verwenden und nur zu verwenden positive Zahlen im NumberPicker.
Beispiel, wenn ich eine Nummer in [-50, 50] auswählen möchte:
%Vor%dann, um den ausgewählten Wert zurück zu bekommen:
%Vor%Verwenden:
%Vor% oder %Vor%
Mit beiden können Sie beliebige Strings für Ihren NumberPicker verwenden. Was Sie tun, ist, dass Sie eine Reihe von Strings angeben, die Sie an den NumberPicker übergeben. Dann werden Ihre Werte anstelle der Standardwerte angezeigt.
Die Verwendung von .setFormatter()
erlaubt keine Eingabe negativer Zahlen. Mit .setDisplayedValues()
wird die Tastatur textuell statt numerisch angezeigt.
Also hier ist die Klasse SignedNumberPicker
:
Verwenden Sie es wie "normale" NumberPicker, aber fühlen Sie sich frei, negative Zahlen zu verwenden. Anstelle von getValue()
verwenden Sie getRealValue()
, beacus getValue()
wird intern von NumberPicker (!?) Verwendet.
Ich habe auch setOnTextFocusChangedListener()
method hinzugefügt, was für die Deaktivierung der OK-Schaltfläche usw. nützlich sein könnte.
Aktualisierung: Wenn Sie verhindern möchten, dass der Benutzer den gleichen Wert eingibt, können Sie die Schaltfläche OK deaktivieren, solange die Tastatur angezeigt wird, und den Wert ändern:
%Vor%Tags und Links android numberpicker