长按时是否可以更改NumberPicker的增量?

时间:2012-12-30 23:12:37

标签: android android-widget numberpicker

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

长按向上/向下箭头时,是否可以更改选择器中的增量,以便通过设为100来增加数字,并在释放按钮时返回增量1? / p>

1 个答案:

答案 0 :(得分: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,你可能想要(a)围绕&#34; newVal&#34;到最接近的100或者什么,以及(b)比我更担心环绕式案件。

有些令我惊讶的是,程序化setValue似乎不会导致onValueChangedListener中的无限递归。

我使用&#34; Theme.Black&#34;在4.1仿真器上测试了这个。主题,以获得&#34;老式&#34;带有+/-按钮的NumberPicker