2012-12-30 38 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

相關問題