Ändern Sie die Schrittweite eines NumberPickers

8

Ist es möglich, dies bequemer zu tun als im OnScrollListener-Event? Schade, es hat kein Schrittgrößenattribut ...

    
user940016 19.10.2012, 17:45
quelle

5 Antworten

7

Fügen Sie einfach einen OnValueChangeListener hinzu, etwa wie folgt:

%Vor%     
ajpolt 19.10.2012, 18:54
quelle
25

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:

%Vor%     
kevinpelgrims 20.11.2012 14:19
quelle
8

Um beispielsweise eine Schrittanzahl von "5" festzulegen, verwenden Sie den NumberPicker.Formatter :

%Vor%     
easycheese 26.05.2015 22:12
quelle
5
  

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 ...

    
Guihgo 23.05.2014 17:50
quelle
0

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%     
Marcin Jedynak 13.02.2017 09:41
quelle

Tags und Links