如何从号码选择器中跳过一些号码?

时间:2014-04-15 16:50:38

标签: java android numberpicker

号码选择器

np = (NumberPicker) findViewById(R.id.numberPicker1);
    np.setMaxValue(200);
    np.setMinValue(1);
    Button b = (Button) findViewById(R.id.button1);

当我滚动数字时应该去1 2 3 ......等等。

我想要的是滚动它应该去5 10 15等

怎么做?

3 个答案:

答案 0 :(得分:5)

此代码段应该可以解决您的问题;

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;
    }
});

答案 1 :(得分:3)

试试这个:

numberPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

 @Override
 public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
     picker.setValue((newVal < oldVal)?oldVal-5:oldVal+5);
 }

});

Android中的NumberPicker也有一个名为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);

答案 2 :(得分:1)

您可以使用NumberPicker.Formatter格式化显示值。请参阅我的回答here