2012-12-30 40 views
2

我有3900个号码范围,用户使用NumberPicker从中选择一个号码。现在,当在拾取器中长按向上/向下箭头时,数字会缓慢增加/减少。我已经坐在setOnLongPressUpdateInterval()到0毫秒,但它仍然在这个大范围的数字缓慢增加。长按时是否可以改变NumberPicker的增量?

有没有可能在长按上下箭头时改变选择器的增量,所以它增加数字可以说100,并且在释放按钮时回到增量1?

+0

你有机会尝试我的答案,看看它是否适合你? – Morgan

回答

3

我采取了这种方法,因为陷入长时间按压的工作似乎令人担忧。

NumberPicker _picker; 
long _tsLastChange; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.number_picker); 

    _picker = (NumberPicker) findViewById(R.id.picker); 
    _picker.setMinValue(1); 
    _picker.setMaxValue(3900); 
    _picker.setOnLongPressUpdateInterval(100); 

    _picker.setOnValueChangedListener(new OnValueChangeListener() { 

     @Override 
     public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 
      Log.d("NumberPickerActivity", "value changed detected"); 
      long tsChange = System.currentTimeMillis(); 
      if (tsChange - _tsLastChange < 200) 
      { 
       if (newVal > oldVal) 
        _picker.setValue(newVal + 100); 
       else 
        _picker.setValue(newVal - 100); 
      } 
      _tsLastChange = tsChange; 
     } 
    }); 
} 

为了得到这个工作IRL,你可能会想(一)圆“的newval”到最近的100什么的,和(b)担心环绕情况比我还多。

有点令我感到意外的是,编程setValue似乎不会在onValueChangedListener中导致无限递归。

我在4.1模拟器上使用“Theme.Black”主题测试了这个,用+/-按钮获得“老式”NumberPicker

相关问题