2013-03-28 8 views
10

Ich arbeite an einer Android-Anwendung. Irgendwo drinnen, zeige ich das NumberPicker Widget an.Blockübergang zwischen Minimalwert und Maximalwert in NumberPicker

Wie kann ich den Übergang zwischen dem minimalen Wert und dem maximalen Wert deaktivieren?

Was ich meine, ich bin mit einem Nummer-Picker, mit einem Minimalwert von 0 und einem Maximalwert von 9999. Es sieht so aus,

number picker

Auf diese Weise kann der Benutzer schnell schleudern das Widget um von 0 bis 9999 zu springen. Ich möchte dieses Verhalten nicht. Das Zahlenauswahl-Widget, so wie es jetzt aussieht, sieht wie ein geschlossener Kreis aus, und ich versuche zu sehen, wie ich den Kreis genau zwischen dem minimalen und maximalen Wert aufteilen kann, so dass er vom minimalen Wert und maximalen Wert aussieht:

number picker minimum value number picker maximum value

Wie kann ich das erreichen?

Was ich versucht habe:

  • ich überall in dem NumberPicker API gesucht, es scheint nicht, wie das ist etwas, das man einfach mit einem Verfahren einstellen.
  • Ich denke, dass ich die Methode setDisplayedValues(String[] displayedValues) Methode verwenden kann, leere Strings vor dem Mindestwert und nach dem Maximalwert, so dass kein Wert vor dem Mindestwert oder nach dem Maximalwert, BUT der Benutzer wird immer noch angezeigt in der Lage sein, an ihnen vorbeigehen oder SCHLECHTER zu sein: Wählen Sie den leeren Wert.

Irgendwelche Ideen? Muss ich meine Hände schmutzig machen und in die Widget-Implementierung eintauchen? Vielleicht im Touch-Listener?

Antwort

5

Ist das nicht setWrapSelectorWheel(false) (from the API)?

+0

Nein, das ist es nicht. – Leeeeeeelo

+0

Was ist los damit? Wenn Sie es auf "false" setzen, können Sie nicht vom minimalen zum maximalen Wert wechseln oder umgekehrt. – sgdesmet

+0

Dies ist die Lösung, stellen Sie nur sicher, dass die set setWrapSelectorWheel (false) -Methode nach der Initialisierung der Picker-Werte aufgerufen wird. – SergioM

10

Sie müssen setWrapSelectorWheel(false) auf der Nummernauswahl aufrufen. Seien Sie jedoch vorsichtig, dass Sie setMinimumValue(...) und setMaximumValue(...)vor den Anruf zu setWrapSelectorWheel(false) tun. Es wird einfach nicht funktionieren, wenn Sie es anders machen.

Wie ich, Sie suchen vielleicht nach einer Möglichkeit, dies über XML zu tun, aber es gibt keine Möglichkeit zu der Zeit.

2

Wie bereits erwähnt, tut setWrapSelectorWheel (false) den Trick, daher sollte eine der angebotenen Antworten akzeptiert werden.

Im Allgemeinen ist diese Reihenfolge der Anrufe arbeiten:

picker.setMinValue(0); 
picker.setMaxValue(stringValuesArray.length - 1); 
picker.setDisplayedValues(stringValuesArray); 
picker.setValue(defaultValue); 
picker.setWrapSelectorWheel(false); 
+0

Danke, es funktioniert für mich! – codezjx

Verwandte Themen