NumberPicker
私は、ユーザーが 1 つの数字を選択するために使用する 3900 の数字の範囲を持っています。これで、ピッカーで上下の矢印を長押しすると、数字がゆっくりと増減します。私はsetOnLongPressUpdateInterval()
0 ミリ秒に設定しましたが、この大きな数値範囲ではまだゆっくりと増加しています。
上下の矢印を長押しするとピッカーの増分を変更して、たとえば 100 ずつ数字を増やし、ボタンを放すと 1 の増分に戻すことは可能ですか?
NumberPicker
私は、ユーザーが 1 つの数字を選択するために使用する 3900 の数字の範囲を持っています。これで、ピッカーで上下の矢印を長押しすると、数字がゆっくりと増減します。私はsetOnLongPressUpdateInterval()
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;
}
});
}
これを IRL で機能させるには、おそらく (a) "newVal" を 100 程度に丸め、(b) 私よりもラップアラウンド ケースについて心配する必要があるでしょう。
私にとってやや驚くべきことは、プログラムsetValue
がonValueChangedListener
.
NumberPicker
「Theme.Black」テーマを使用して 4.1 エミュレーターでこれをテストし、+/- ボタンで「昔ながら」を取得しました。