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