Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 长按时是否可以更改NumberPicker的增量?_Android_Android Widget_Numberpicker - Fatal编程技术网

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

Android 长按时是否可以更改NumberPicker的增量?,android,android-widget,numberpicker,Android,Android Widget,Numberpicker,我有3900个数字,用户可以使用NumberPicker从中选择一个数字。现在,在选择器中长按向上/向下箭头时,数字会缓慢增加/减少。我已经将设置为0毫秒,但在如此大的数字范围内,它仍然缓慢增加 当长按向上/向下箭头时,是否可以更改选择器的增量,使数字增加100,并在释放按钮时返回增量1?我采用这种方法,因为捕捉长按的工作似乎令人担忧 NumberPicker _picker; long _tsLastChange; @Override protected void onCreate(Bund

我有3900个数字,用户可以使用
NumberPicker
从中选择一个数字。现在,在选择器中长按向上/向下箭头时,数字会缓慢增加/减少。我已经将
设置为0毫秒,但在如此大的数字范围内,它仍然缓慢增加


当长按向上/向下箭头时,是否可以更改选择器的增量,使数字增加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;
        }
    });
}
NumberPicker\u选择器;
长期变化;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.number\u选择器);
_picker=(NumberPicker)findviewbyd(R.id.picker);
_选择器设置最小值(1);
_选择器设置最大值(3900);
_选择器。设置OnLongPressUpdateInterval(100);
_picker.setOnValueChangedListener(新的OnValueChangeListener(){
@凌驾
public void onValueChange(NumberPicker选择器、int-oldVal、int-newVal){
Log.d(“NumberPickerActivity”,“检测到的值已更改”);
long tsChange=System.currentTimeMillis();
如果(t更改-\u t最后更改<200)
{
如果(newVal>oldVal)
_选择器设置值(newVal+100);
其他的
_选择器设置值(newVal-100);
}
_tsLastChange=tsChange;
}
});
}
为了使这一点在IRL中起作用,您可能希望(a)将“newVal”四舍五入到最接近的100左右,(b)比我更担心概括案例

让我有些惊讶的是,编程的
setValue
似乎不会在
onValueChangedListener
中导致无限递归


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

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