Ist es möglich, dies bequemer zu tun als im OnScrollListener-Event? Schade, es hat kein Schrittgrößenattribut ...
Fügen Sie einfach einen OnValueChangeListener hinzu, etwa wie folgt:
%Vor%Der NumberPicker in Android hat eine Methode namens setDisplayedValues . Sie können diesen verwenden, um benutzerdefinierte Werte anzuzeigen (ein Array von Strings wird benötigt) und diese dann zuzuordnen, wenn Sie den Wert benötigen. Wenn Sie also zum Beispiel in einer Minutenauswahl fünf Schritte benötigen, können Sie ein Array wie dieses erstellen:
%Vor% Und wenn Sie dann den Wert in OnValueChangeListener
erhalten, müssen Sie ihn einfach in eine Ganzzahl umwandeln:
Um beispielsweise eine Schrittanzahl von "5" festzulegen, verwenden Sie den NumberPicker.Formatter :
%Vor%Der NumberPicker in Android hat eine Methode namens setDisplayedValues . Sie können diesen verwenden, um benutzerdefinierte Werte anzuzeigen (ein Array von Strings wird benötigt) und diese dann zuzuordnen, wenn Sie den Wert benötigen.
Sie können beispielsweise eine Funktion wie folgt erstellen:
%Vor%Sie sollten also die Methode & gt; NumberPicker.setDisplayedValues zum Beispiel :
%Vor%Um den Wert im NumberPick zu erhalten:
%Vor%Entschuldige mein Englisch ...
Wenn Sie die oben beschriebenen Methoden verwenden, müssen Sie beachten, dass der Picker dem Benutzer nicht nur erlaubt, einen Wert durch Scrollen, sondern auch durch Eingabe mit der Tastatur auszuwählen.
Standardmäßig ist der Eingabetyp des Eingabefeldes auf TYPE_CLASS_NUMBER
eingestellt und dem Benutzer wird daher eine numerische Tastatur angezeigt. Es scheint, dass wenn Sie setDisplayedValues
verwenden, die Auswahl den Typ in TYPE_CLASS_TEXT
ändert. Wenn Sie jedoch setFormatter
verwenden, wird der Eingabetyp nicht geändert.
Daher kann die Verwendung von Formatierer in diesem Fall zu unerwartetem Verhalten führen. Nehmen wir an, Sie möchten, dass der Benutzer nur die Werte "0" oder "5" auswählen kann. Sie können Code wie folgt haben:
%Vor%In diesem Szenario erhält der Benutzer jedoch die numerische Tastatur, kann aber nur "0" oder "1" eingeben.
Wenn Sie stattdessen verwenden:
%Vor%Der Benutzer sieht die Texttastatur, kann aber wie erwartet "0" oder "5" eingeben.
Wenn Sie mit der Texttastatur belästigt werden, können Sie reflection verwenden, um auf das private Feld zuzugreifen, und den Eingabetyp zurück auf Nummer setzen (was natürlich nicht empfohlen wird, es sei denn, es ist wirklich notwendig). Das Feld heißt "mInputText" oder "mText", wenn Sie Oldies-Goldies wie Gingerbread als Ziel haben.
%Vor%Tags und Links android android-widget