【问题标题】:How do i skip some number from number picker?我如何从号码选择器中跳过一些号码?
【发布时间】:2014-04-15 16:50:37
【问题描述】:

数字选择器

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

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

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

怎么做?

【问题讨论】:

  • 你不能用NumberPicker.setDisplayedValues(String[] values)这个方法吗?

标签: java android numberpicker


【解决方案1】:

这段代码 sn-p 应该可以解决您的问题;

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

【讨论】:

  • 这段代码工作正常,但输出给出了一些我不知道为什么的其他值,但数字选择器滚动工作正常。还有一件事我应该做些什么来保持数字选择器的值是关闭时。当关闭后回到活动时,它应该是最后一个选择的值..
  • 您能详细说明一下吗?什么样的其他号码。你是怎么得到它们的?我已经在一定程度上测试了这段代码。您的意见将帮助我解决它。
  • 5 显示数字选择器输出为 1 ,10 显示数字选择器输出为 2 等
  • 我会修复它并发送给您。它很简单......它提供了displayvalues索引的索引。需要乘以 5 并使用它。
  • 已修复...请使用 newValue!
【解决方案2】:

试试这个:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 一切都很好,预计 numberPicker.setValue() 在这种方法中不能正常工作。
    猜你喜欢
    • 1970-01-01
    • 2020-05-20
    • 2016-03-04
    • 2015-01-31
    • 2014-12-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 2011-09-04
    相关资源
    最近更新 更多