NumberPickerの増減間隔を他の値に設定することはできますか? たとえば、50 (50、100、150、200、250 など)? それとも、カスタマイズ/ハックが必要ですか?
質問する
7017 次
4 に答える
7
私はあなたがこれを行うことができると思います:
ピッカーの表示された配列値を初期化します。
int NUMBER_OF_VALUES = 10; //num of values in the picker int PICKER_RANGE = 50; ... String[] displayedValues = new String[NUMBER_OF_VALUES]; //Populate the array for(int i=0; i<NUMBER_OF_VALUES; i++) displayedValues[i] = String.valueOf(PICKER_RANGE * (i+1)); /* OR: if the array is easy to be hard-coded, then just hard-code it: String[] displayedValues = {"50", "100", "150", .....}; */
表示された配列をピッカーに設定します。
/* NOTE: Your picker range has to be [0, displayedValues.size()-1] to be consistent with the array index (displayedValues index). */ //ToDo: Initialize the picker first. numPicker.setMinValue(0); numPicker.setMaxValue(displayedValues.size()-1); numPicker.setDisplayedValues(displayedValues);
ピッカーの値を取得/設定する場合:
//To get the current value in the picker choosenValue = displayedValues[numPicker.getValue()]; //To set a new value (let's say 150) for( int i=0; i<displayedValues.length ; i++ ) if( displayedValues[i].equals("150") ) numPicker.setValue(i);
最後に、 android-wheelと呼ばれる、カスタマイズが容易な優れたウィジェットがあります。よろしければご覧いただき、ご利用ください。
于 2012-08-12T23:07:22.810 に答える
0
@ iturki の値を設定する最後のポイント。valueInNumberPicker X PICKER_RANGE = valueInDisplayedValueArray したがって、次の方法で for ループを回避できます。
// PICKER_RANGE= 50 so 150/50 -1 = 2, numPicker.setValue(2) == 150
numPicker.setValue(150/PICKER_RANGE -1);
私の2セント。
ちなみに、iturkiによる素晴らしい回答です。
于 2013-05-28T10:35:56.780 に答える
0
その日の少し遅いですが、これは私にとってはうまくいきます...
numberPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker numberPicker, int oldVal, int newVal) {
if (newVal > oldVal) {
numberPicker.setValue(newVal+(myInterval-1));
} else if (newVal < oldVal)
numberPicker.setValue(newVal-(myInterval-1));
}
});
于 2020-11-05T04:50:30.533 に答える