2
我有3900個號碼範圍,用戶使用NumberPicker
從中選擇一個號碼。現在,當在拾取器中長按向上/向下箭頭時,數字會緩慢增加/減少。我已經坐在setOnLongPressUpdateInterval()
到0毫秒,但它仍然在這個大範圍的數字緩慢增加。長按時是否可以改變NumberPicker的增量?
有沒有可能在長按上下箭頭時改變選擇器的增量,所以它增加數字可以說100,並且在釋放按鈕時回到增量1?
我有3900個號碼範圍,用戶使用NumberPicker
從中選擇一個號碼。現在,當在拾取器中長按向上/向下箭頭時,數字會緩慢增加/減少。我已經坐在setOnLongPressUpdateInterval()
到0毫秒,但它仍然在這個大範圍的數字緩慢增加。長按時是否可以改變NumberPicker的增量?
有沒有可能在長按上下箭頭時改變選擇器的增量,所以它增加數字可以說100,並且在釋放按鈕時回到增量1?
我採取了這種方法,因爲陷入長時間按壓的工作似乎令人擔憂。
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
。
你有機會嘗試我的答案,看看它是否適合你? – Morgan