问题
Number picker
np = (NumberPicker) findViewById(R.id.numberPicker1);
np.setMaxValue(200);
np.setMinValue(1);
Button b = (Button) findViewById(R.id.button1);
when I scroll numbers should go 1 2 3 ... etc ..
what I want is when scrolling its should go 5 10 15 etc
how to do it ?
回答1:
This code snippet should fix your problem;
NumberPicker np = (NumberPicker) findViewById(R.id.numberPicker1);
String[] numbers = new String[200/5];
for (int i=0; i<numbers.length; i++)
numbers[i] = Integer.toString(i*5+5);
np.setDisplayedValues(numbers);
np.setMaxValue(numbers.length-1);
np.setMinValue(0);
np.setWrapSelectorWheel(false);
np.setOnValueChangedListener(new OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
int newValue = newVal * 5 + 5;
}
});
回答2:
Try this :
numberPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
picker.setValue((newVal < oldVal)?oldVal-5:oldVal+5);
}
});
Also NumberPicker in Android has a method called setDisplayedValues.
String[] minuteValues = new String[12];
for (int i = 0; i < minuteValues.length; i++) {
String number = Integer.toString(i*5);
minuteValues[i] = number.length() < 2 ? "0" + number : number;
}
numberPicker.setDisplayedValues(minuteValues);
回答3:
You can use NumberPicker.Formatter to format display values. See my answer here
来源:https://stackoverflow.com/questions/23089868/how-do-i-skip-some-number-from-number-picker